上传点DELPHI7资料 希望大家有用 我一直在用的俄
Des 加密函数ourdev_421125.rar(文件大小:3K) (原文件名:Des.rar)获取硬盘物理编号ourdev_421126.rar(文件大小:2K) (原文件名:GetDSN.rar)
MD5 加密函数ourdev_421127.rar(文件大小:3K) (原文件名:Md5.rar)
建立右下角任务栏图标ourdev_421128.rar(文件大小:1K) (原文件名:sysNotifyIcon.rar)
异或 字符串加密函数ourdev_421129.rar(文件大小:990字节) (原文件名:Ucrypt.rar)
获取网卡、操作系统版本、CPU的ID、BIOS信息等ourdev_421130.rar(文件大小:3K) (原文件名:VersionId.rar) //==================2=======================
// 如何实现执行一个程序并等待它完成
//
// Filename:执行文件名
// Params:执行参数
// WindowState:窗口方式 03:最大化
// 07:最小化
// 其他:一般状态
//==============================================
function ExecAndWait(const Filename,Params:string;WindowState:word):boolean;
var
SUInfo: TStartupInfo;
ProcInfo: TProcessInformation;
CmdLine: string;
begin
CmdLine:=filename+' '+params;
FillChar(SUInfo, SizeOf(SUInfo), #0);
with SUInfo do
begin
cb := SizeOf(SUInfo);
dwFlags := STARTF_USESHOWWINDOW;
wShowWindow := WindowState;
end;
Result:=CreateProcess(NIL, PChar(CmdLine), NIL, NIL, FALSE,
CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, NIL,
PChar(ExtractFilePath(Filename)), SUInfo, ProcInfo);
if Result then
begin
//等待应用程序结束
WaitForSingleObject(ProcInfo.hProcess, INFINITE);
//删除句柄
CloseHandle(ProcInfo.hProcess);
CloseHandle(ProcInfo.hThread);
end;
end; ///====================================
/// 动态加载动态连接库
/// P:定义一个函数变量
/// 如 type Tproc=procedure(X:integer);stdcall;
/// var p:Tproc;
/// H:函数句柄 用于释放函数
/// FuncName:DLL中的函数名
/// DllPath:DLL文件名
///====================================
Function LoadDllFunc(var P:Pointer;
H:Thandle;
FuncName:string;
DllPath:string):boolean;
var
path:string;
begin
result:=false;
if not findfilepath(path,dllpath) then
begin
showmessage('未找到 ['+dllpath+'] 动态链接库文件!');
exit;
end;
H:=loadlibrary(pchar(path));
if H<=0 then
begin
Raise Exception.Create
( '动态链接库 ['+dllpath+'] 调用失败,错误代码是:'+Inttostr(Getlasterror));
exit;
end else begin
P:=getprocaddress(H,pchar(FuncName));
end;
ifnot Assigned(P) then
begin
Raise Exception.Create
('GetProcAddress调用函数 ['+FuncName+'] 失败,错误代码是:'+inttostr(getlasterror));
result:=false;
exit;
end;
result:=true;
end; ///==============================================
/// 查找一个相对路径的文件的绝对路径
/// GetPath:存放结果
/// PathStr:输入的文件路径
///==============================================
function FindFilePath(var GetPath:string;PathStr:string):boolean;
begin
result:=false;
getpath:=PathStr;
///默认路径
DefaultDBPath:=trim(DefaultDBPath);
if copy(defaultdbpath,length(defaultdbpath),1)<>'\' thendefaultdbpath:=defaultdbpath + '\';
if FileExists(defaultdbpath + PathStr) then
begin
GetPath:=defaultdbpath + PathStr;
result:=true;
exit;
end;
///程序运行路径
if FileExists(AppPath + PathStr) then
begin
GetPath:=AppPath + PathStr;
result:=true;
exit;
end;
///系统路径
if FileExists(windir + Pathstr) then
begin
GetPath:=windir + Pathstr;
result:=true;
exit;
end;
///系统路径
if FileExists(sysdir + Pathstr) then
begin
GetPath:=sysdir + Pathstr;
result:=true;
exit;
end;
///绝对路径
if FileExists(PathStr) then
begin
GetPath:=PathStr;
result:=true;
exit;
end;
end; ///==========================================
/// 获取系统路径SysDir
///==========================================
function sysdir:string;
var
s:Pchar;
begin
getmem(s,255);
getsystemdirectory(s,255);
result:=trim(s)+'\';
end;
///==========================================
/// 获取系统路径WinDir
///==========================================
function windir:string;
var
s:Pchar;
begin
getmem(s,255);
getwindowsdirectory(s,255);
result:=trim(s)+'\';
end; {--------------------------------------------------------------}
{ 本地数据操作函数 }
{ Version:1.0 }
{ 作者:knight }
{--------------------------------------------------------------}
unit myData;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
IniFiles,StdCtrls,ADODB,Db,registry,DBClient,
SConnect,uFindPath;
///1、access数据库操作
function ADOCn(var conn:TADOConnection; ///连接ACCESS数据库
DBPath:string;
PWD:string='';
UID:string=''):boolean;stdcall;overload;
function AdoCn(var TSCn:TSocketConnection; ///局域网分布式数据库连接
DBpath:string;
pwd:string='';
uid:string=''):boolean;overload;
function ADORS(var cn:TADOConnection; ///执行SQL语句
var RS:TADOQuery;
SQLStr:string;
KeepConnect:boolean=false):boolean;stdcall;overload;
function AdoRs(var TSCn:TSocketConnection; ///局域网分布式数据库SQL执行
ClientSet:TClientDataSet;
SQL:string;
KeepConnect:boolean=false):boolean;overload;
///2、ini 文件操作
function readinifile(FilePath,Sectionstr,KeyStr:string; ///读 ini 文件
mode:integer=0):variant; stdcall;
function writeinifile(FilePath,Sectionstr,KeyStr:string; ///写 ini 文件
values:variant;
mode:integer=0):boolean; stdcall;
procedure DelKey(FilePath,Sectionstr,KeyStr:string); ///删除KEY
procedure DelSection(filepath,sectionstr:string); ///删除 段
functionGetKeyList(filepath,sectionstr:string):tstrings;///获取所有KEY
functionGetSectionList(filepath:string):tstrings; ///获取所有 段
functionGetLn(filepath,sectionstr:string):tstrings; /// 获取段下的所有行
//3、txt文件操作
functionWritetxtFile(Filepath:shortstring; ///写文本文件
S:string;
OverWrite:boolean=false):boolean;
functionReadtxtfile(filepath:shortstring):string; ///读文本文件
///4、注册表操作
FunctionReadReg(Root:hkey;path,key:string):string; ///读注册表
FunctionWriteReg(Root:hkey;
path,key,val:string;
mode:byte=0):boolean; ///写注册表
var
ServerName: string;
ProviderName: string;
dbport: integer;
IsLanData: boolean;
//data1,data2,data3: dbinfor;
LanHostIP: string;
implementation
///1、access数据库操作
///=================================================
/// Access的ADO 连接
///=================================================
function ADOCn(var Conn:TADOConnection;
DBPath:string;
PWD:string='';
UID:string=''):boolean;stdcall;overload;
var
dbname:string;
begin
result:=false;
dbname:='';
if FindFilePath(dbname,dbpath) then
begin
with conn do
begin
if Connected=true thenConnected:=false ;
ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;'+
'Data Source='+dbname+';'+
'Persist Security Info=false;'+
'Jet OLEDB:Database Password='+PWD+';'+
'User ID='+UID+';mode=3';
Try
KeepConnection:=True;
LoginPrompt:=false;
Open;
Result:=true;
Except
close;
Result:=false;
End;
end;
end
else begin conn.Close; result:=false; end;
end;
function AdoCn(var TSCn:TSocketConnection;
DBpath:string;
pwd:string='';
uid:string=''):boolean;overload; //局域网分布式数据库连接
begin
result:=false;
TSCn.LoginPrompt:=false;
TSCn.Connected:=false;
if LanHostIP='' then LanHostIP:='127.0.0.1';
TSCn.Address:=LanHostIP;
if dbport<2 then dbport:=211;
TSCn.Port:=dbport;
if ServerName='' then ServerName:='SQLServer.SQLSvr';//com服务名
TSCn.ServerName:=ServerName;
try
TSCn.Connected:=true;
try
TSCn.AppServer.SetDBName(dbpath,PWD,uid);
result:=TSCn.Connected;
except result:=false; end;
except result:=false; end;
end;
///=================================================
/// Access的数据 SQL 语句操作
///=================================================
function ADORS(var cn:TADOConnection;
var RS:TADOQuery;
SQLStr:string;
KeepConnect:boolean=false):boolean;stdcall;overload;
begin
result:=false;
with rs do
begin
Connection:=cn;
SQL.Text:=SQLStr;
Try
if KeepConnect then open//返回结果
else begin
ExecSQL; //不返回结果
close; cn.Close;
end;
Result:=true;
Except
close;
cn.Close;
Result:=false;
End;
end;
end;
function AdoRS(var TSCn:TSocketConnection;
ClientSet:TClientDataSet;
SQL:string;
KeepConnect:boolean=false):boolean;overload; //局域网分布式数据库SQL执行
begin
result:=false;
clientset.Active:=false;
clientset.RemoteServer:=TSCn;
if ProviderName='' then ProviderName:='DataSetProvider1';//数据打包传输控件名
clientset.ProviderName:=ProviderName;
try
TSCn.AppServer.SQLExecute(sql,'knight','qishiq',keepconnect);
clientset.Active:=KeepConnect;
result:=true;
except
result:=false;
end;
end;
///2、ini 文件操作
///=================================================
/// 写 ini 文件
///=================================================
function writeinifile(FilePath:string;
Sectionstr:string;
KeyStr:string;
values:variant;
mode:integer=0):boolean;stdcall;
var
myinifile:tinifile;
filename:string;
begin
result:=false;
findfilepath(filename,filepath);
try
myinifile:=TInifile.Create(filename);
except
exit;
end;
case mode of
1:myinifile.writeinteger(SectionStr,KeyStr,Values);
2:myinifile.writebool(SectionStr,KeyStr,Values);
else
myinifile.writestring(SectionStr,KeyStr,Values);
end;
myinifile.Destroy;
result:=true;
end;
///=================================================
/// 删除 KEY
///=================================================
procedure DelKey(FilePath:string;
Sectionstr:string;
KeyStr:string);
var
myinifile:tinifile;
filename:string;
begin
filename:=FilePath;
myinifile:=TInifile.Create(filename);
myinifile.DeleteKey(Sectionstr,Keystr);
myinifile.Destroy;
end;
///=================================================
/// 删除 小节
///=================================================
procedure DelSection(filepath,sectionstr:string);
var
myinifile:tinifile;
filename:string;
begin
filename:=FilePath;
myinifile:=TInifile.Create(filename);
myinifile.EraseSection(Sectionstr);
myinifile.Destroy
end;
///=================================================
/// 读 ini 文件
///=================================================
function readinifile(FilePath:string;
Sectionstr:string;
KeyStr:string;
mode:integer=0):variant; stdcall;
var
myinifile:tinifile;
filename:string;
ReValue:variant;
begin
if not findfilepath(filename,filepath) then
begin
case mode of
1:Result:=0;
2:Result:=false;
else
Result:='';
end;
exit;
end;
myinifile:=TInifile.Create(filename);
case mode of
1:ReValue:=myinifile.Readinteger(Sectionstr,Keystr,0);
2:ReValue:=myinifile.Readbool(Sectionstr,Keystr,False);
else
ReValue:=myinifile.Readstring(Sectionstr,Keystr,'');
end;
myinifile.Destroy;
Result:=ReValue;
end;
///=================================================
/// 读一小节中的所有关键字名
///=================================================
function GetKeyList(filepath,sectionstr:string):TStrings;
var
myinifile:tinifile;
filename:string;
st:tstrings;
begin
st:=tstringlist.Create;
filename:=FilePath;
myinifile:=TInifile.Create(filename);
myinifile.readsection(Sectionstr,st);
result:=st;
myinifile.Destroy
end;
///=================================================
/// 读一小节的 所有行(包括关键字、=、值)
///=================================================
function GetLn(filepath,sectionstr:string):TStrings;
var
myinifile:tinifile;
filename:string;
st:tstrings;
begin
st:=tstringlist.Create;
filename:=FilePath;
myinifile:=TInifile.Create(filename);
myinifile.readsectionvalues(sectionstr,st);
result:=st;
myinifile.Destroy
end;
///=================================================
/// 读INI文件中所有小节名
///=================================================
function GetSectionList(filepath:string):tstrings;
var
myinifile:tinifile;
filename:string;
st:tstrings;
begin
st:=tstringlist.Create;
filename:=FilePath;
myinifile:=TInifile.Create(filename);
myinifile.readsections(st);
result:=st;
myinifile.Destroy
end;
///3、txt文件操作
///=================================================
/// 写 txt文本文件
/// 文档如果已经存在 则打开
/// 如果不存在则建立一个新的文档
///=================================================
function WritetxtFile(FilePath:shortstring;S:string;OverWrite:boolean=false):boolean;
var
FileHandle: Integer;
Buffer: PChar;
wrLen: word;
st: tstrings;
i: integer;
wstr: string;
filename: string;
begin
result:=false;
wstr:='';
if findfilepath(filename,filepath) then
begin
if OverWrite then
begin
try
deletefile(filename);
except
EXIT;
end;
wstr:=s;
FileHandle := FileCreate(FileName);
end ELSE BEGIN
st:=tstringlist.Create;
st.LoadFromFile(filename);
st.Add(s);
for i:=0 to st.Count-1 do
begin
wstr:=wstr+st+char(13)+char(10);
end;
freeandnil(st);
FileHandle := FileOpen(FileName, fmOpenReadWrite);
END;
end else begin
WSTR:=S;
FileHandle := FileCreate(FileName);
end;
if FileHandle < 0 then
Begin
Exit;
End;
WrLen:=length(wstr);
GetMem(Buffer,WrLen+1); ///分配一个 ?BYTE 的内存空间
try
StrPCopy(Buffer, wstr);///把文本拷贝到内存中
FileWrite(FileHandle,Buffer^,WrLen);///把内存中的前 WrLen 个 BYTE 内容写进打开的文件中
finally
FreeMem(Buffer);
end;
FileClose(FileHandle);
result:=true;
end;
///=================================================
/// 读文本 很简单
///=================================================
function Readtxtfile(filePath:shortstring):string;
var
ss:tstrings;
s:string;
i:integer;
filename:string;
begin
result:='';
s:='';
if not findfilepath(filename,filepath) then exit;
ss:=tstringlist.Create;
ss.LoadFromFile(filename); //uses Classes.pas
for i:=0 to ss.Count-1 do
s:=s+ss+char(13)+char(10);
ss.Free;
result:=s;
end ;
///4、注册表操作
///=================================================
/// 读 注册表
///=================================================
Function ReadReg(Root:hkey;path,key:string):string;
var
reg:Tregistry;
begin
result:='';
reg:=Tregistry.Create;
reg.RootKey:=Root;
if not reg.OpenKeyReadOnly(path) then
begin reg.CloseKey; exit; end;
result:=reg.ReadString(key);
reg.CloseKey;
reg.Free;
end;
///=================================================
/// 写 注册表
///=================================================
Function writereg(Root:hkey;path,key,val:string;mode:byte=0):boolean;
var
reg:Tregistry;//当key='' 时 表示写入默认值
begin
result:=false;
reg:=Tregistry.Create;
reg.RootKey:=Root;
if not reg.OpenKey(path,true) then
begin
reg.CloseKey; exit;
end;
if mode=0 then
begin
reg.WriteString(key,val);
end
else if mode=1 then
begin
reg.WriteInteger(key,strtointdef(val,0));
end
else if mode=2 then
begin
reg.WriteFloat(key,strtofloatdef(val,0.0));
end
else if mode=3 then
begin
reg.WriteBool(key,strtobooldef(val,false));
end;
result:=true;
reg.CloseKey;
reg.Free;
end;
end. 我已经很少用OFFICE了一直是用WPS小巧而且官方宣称永久免费的ourdev_421137.rar(文件大小:172K) (原文件名:操作WPS表格.rar)
是根据官方的API写的 但是里面好多API函数使用不成功 不知道回事 只写了几个测试成功的函数
WPS的API ourdev_421142.rar(文件大小:1.08M) (原文件名:WPS_API.rar)
希望哪个高手把它全测试出来 制作资源文件
如果要把 图标文件(*.ico)、图片(*.jpg、*.bmp...)、excel文件(*.xls)...制作
则:
1、
mico icon icon.ico
mico1 icon icon01.ico
micon jpgfile icon.jpg
Sample1 xlsfile Sample01.xls
Sample2 xlsFile Sample02.xls
Sample3 xlsFile Sample03.xls
mmax bitmaptomax.bmp
mback bitmaptoback.bmp
mclose bitmaptoclose.bmp
以上文字写入记事本,再存为 *.rc 文件(eg:aaa.rc)
2、
把 brcc32 aaa.rc
写入记事本,再存为 *.bat 批处理文件(eg:brcc32.bat)
3、
然后运行brcc32.bat 批处理文件,生成的 aaa.res 为资源文件
4、
在单元文件(*.pas)的 implementation 后 加入一下文字
{$r aaa.RES}
提取资源文件
1、保存到硬盘
uses
classes;
var
res:tresourcestream;
begin
res:=tresourcestream.Create(hinstance,'Sample1',pchar('xlsfile'));
res.SaveToFile(filepath);
res.Free;
end;
2、从资源文件中加载JPG图片
uses
classes,jpeg;
var
res:tresourcestream;
Fjpg:TJpegImage;
begin
fjpg:=TJpegImage.Create;
res:=tresourcestream.Create(hinstance,'micon',pchar('jpgfile'));
FJpg.LoadFromStream(res);
image1.Picture.Bitmap.Assign(FJpg);
FJpg.Free;
res.Free;
end;
3、从资源文件中加载BMP图片
uses
classes,Graphics;
begin
image1.Picture.Bitmap.LoadFromResourceName(HInstance, 'mclose');
end;
4、从资源文件中加载程序系统图标
Application.Icon.Handle := LoadIcon(HInstance, 'mIco1'); 顶一下啊,虽然暂时用不上 好好的资料,但俺正在学, 请问楼主学Delphi 最主要就是学习Pasual,会Pasual就会简单的编程了呢? 另外有没有单独的Pascal的资料呀? 不错,很经典,顶一下。 delphi 的pascal 语言很简单的 和VB 都差不多的
开始主要是学DELPHI的VCL控件,就可以简单编程了 好资料!谢谢 Delphi是很博大精深的~不是拖拉控件那么简单的 初学 就是拖拉控件的
稍微熟练一点 就是精通使用个控件
高手就是自己编写 好用的控件
再高的人 就像李维 研究VCL核心, 他的一本书《深入核心VCL架构剖析》 ----让人实在是佩服!
其实都是围绕VCL架构的,博大精深也是在于此的,
但所使用的pascal语言其实是很简单的,没有C语言那么复杂
页:
[1]