找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 6681|回复: 1

【分享】Delphi编程技巧集锦(一)

  [复制链接]

1214

主题

352

回帖

11

精华

管理员

菜鸟

积分
93755

贡献奖关注奖人气王精英奖乐于助人勋章

发表于 2009-7-26 14:52:47 | 显示全部楼层 |阅读模式
<p><strong>◇[DELPHI]网络邻居复制文件</strong> <br/>uses shellapi; <br/>copyfile(pchar('newfile.txt'),pchar('//computername/direction/targer.txt'),false); <br/><br/><strong>◇[DELPHI]产生鼠标拖动效果 <br/></strong>通过MouseMove事件、DragOver事件、EndDrag事件实现,例如在PANEL上的LABEL: <br/>var xpanel,ypanel,xlabel,ylabel:integer; <br/>PANEL的MouseMove事件:xpanel:=x;ypanel:=y; <br/>PANEL的DragOver事件:xpanel:=x;ypanel:=y; <br/>LABEL的MouseMove事件:xlabel:=x;ylabel:=y; <br/>LABEL的EndDrag事件:label.left:=xpanel-xlabel;label.top:=ypanel-ylabel; <br/><br/><strong>◇[DELPHI]取得WINDOWS目录</strong> <br/>uses shellapi; <br/>var windir:array[0..255] of char; <br/>getwindowsdirectory(windir,sizeof(windir)); <br/>或者从注册表中读取,位置: <br/>HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion <br/>SystemRoot键,取得如:C:\WINDOWS <br/><br/><strong>◇[DELPHI]在FORM或其他容器上画线 <br/></strong>var x,y:array [0..50] of integer; <br/>canvas.pen.color:=clred; <br/>canvas.pen.style:=psDash; <br/>form1.canvas.moveto(trunc(x),trunc(y)); <br/>form1.canvas.lineto(trunc(x[j]),trunc(y[j])); <br/><br/><strong>◇[DELPHI]字符串列表使用 <br/></strong>var tips:tstringlist; <br/>tips:=tstringlist.create; <br/>tips.loadfromfile('filename.txt'); <br/>edit1.text:=tips[0]; <br/>tips.add('last line addition string'); <br/>tips.insert(1,'insert string at NO 2 line'); <br/>tips.savetofile('newfile.txt'); <br/>tips.free; <br/><br/><strong>◇[DELPHI]简单的剪贴板操作 <br/></strong>richedit1.selectall; <br/>richedit1.copytoclipboard; <br/>richedit1.cuttoclipboard; <br/>edit1.pastefromclipboard; <br/><br/><strong>◇[DELPHI]关于文件、目录操作 <br/></strong>Chdir('c:\abcdir');转到目录 <br/>Mkdir('dirname');建立目录 <br/>Rmdir('dirname');删除目录 <br/>GetCurrentDir;//取当前目录名,无'\' <br/>Getdir(0,s);//取工作目录名s:='c:\abcdir'; <br/>Deletfile('abc.txt');//删除文件 <br/>Renamefile('old.txt','new.txt');//文件更名 <br/>ExtractFilename(filelistbox1.filename);//取文件名 <br/>ExtractFileExt(filelistbox1.filename);//取文件后缀 <br/><br/><strong>◇[DELPHI]处理文件属性 <br/></strong>attr:=filegetattr(filelistbox1.filename); <br/>if (attr and faReadonly)=faReadonly then ... //只读 <br/>if (attr and faSysfile)=faSysfile then ... //系统 <br/>if (attr and faArchive)=faArchive then ... //存档 <br/>if (attr and faHidden)=faHidden then ... //隐藏 <br/><br/><strong>◇[DELPHI]执行程序外文件 <br/></strong>WINEXEC//调用可执行文件 <br/>winexec('command.com /c copy *.* c:\',SW_Normal); <br/>winexec('start abc.txt'); <br/>ShellExecute或ShellExecuteEx//启动文件关联程序 <br/>function executefile(const filename,params,defaultDir:string;showCmd:integer):THandle; <br/>ExecuteFile('C:\abc\a.txt','x.abc','c:\abc\',0); <br/>ExecuteFile('http://tingweb.yeah.net','','',0); <br/>ExecuteFile('mailto:tingweb@wx88.net','','',0); <br/><br/><strong>◇[DELPHI]取得系统运行的进程名</strong> <br/>var hCurrentWindow:HWnd;szText:array[0..254] of char; <br/>begin <br/>hCurrentWindow:=Getwindow(handle,GW_HWndFrist); <br/>while hCurrentWindow &lt;&gt; 0 do <br/>begin <br/>if Getwindowtext(hcurrnetwindow,@sztext,255)&gt;0 then listbox1.items.add(strpas(@sztext)); <br/>hCurrentWindow:=Getwindow(hCurrentwindow,GW_HWndNext); <br/>end; <br/>end; <br/><br/><strong>◇[DELPHI]关于汇编的嵌入</strong> <br/>Asm End; <br/>可以任意修改EAX、ECX、EDX;不能修改ESI、EDI、ESP、EBP、EBX。 <br/><br/><strong>◇[DELPHI]关于类型转换函数</strong> <br/>FloatToStr//浮点转字符串 <br/>FloatToStrF//带格式的浮点转字符串 <br/>IntToHex//整数转16进制 <br/>TimeToStr <br/>DateToStr <br/>DateTimeToStr <br/>FmtStr//按指定格式输出字符串 <br/>FormatDateTime('YYYY-MM-DD,hh-mm-ss',DATE); <br/><br/><strong>◇[DELPHI]字符串的过程和函数</strong>&nbsp;&nbsp;<br/>Insert(obj,target,pos);//字符串target插入在pos的位置。如插入结果大于target最大长度,多出字符将被截掉。如Pos在255以外,会产生运行错。例如,st:='Brian',则Insert('OK',st,2)会使st变为'BrOKian'。&nbsp;&nbsp;<br/>Delete(st,pos,Num);//从st串中的pos(整型)位置开始删去个数为Num(整型)个字符的子字串。例如,st:='Brian',则Delete(st,3,2)将变为Brn。&nbsp;&nbsp;<br/>Str(value,st);//将数值value(整型或实型)转换成字符串放在st中。例如,a=2.5E4时,则str(a:10,st)将使st的值为' 25000'。&nbsp;&nbsp;<br/>Val(st,var,code);//把字符串表达式st转换为对应整型或实型数值,存放在var中。St必须是一个表示数值的字符串,并符合数值常数的规则。在转换过程中,如果没有检测出错误,变量code置为0,否则置为第一个出错字符的位置。例如,st:=25.4E3,x是一个实型变量,则val(st,x,code)将使X值为25400,code值为0。&nbsp;&nbsp;<br/>Copy(st.pos.num);//返回st串中一个位置pos(整型)处开始的,含有num(整型)个字符的子串。如果pos大于st字符串的长度,那就会返回一个空串,如果pos在255以外,会引起运行错误。例如,st:='Brian',则Copy(st,2,2)返回'ri'。&nbsp;&nbsp;<br/>Concat(st1,st2,st3……,stn);//把所有自变量表示出的字符串按所给出的顺序连接起来,并返回连接后的值。如果结果的长度255,将产生运行错误。例如,st1:='Brian',st2:=' ',st3:='Wilfred',则Concat(st1,st2,st3)返回'Brian Wilfred'。&nbsp;&nbsp;<br/>Length(st);//返回字符串表达式st的长度。例如,st:='Brian',则Length(st)返回值为5。&nbsp;&nbsp;<br/>Pos(obj,target);//返回字符串obj在目标字符串target的第一次出现的位置,如果target没有匹配的串,Pos函数的返回值为0。例如,target:='Brian Wilfred',则Pos('Wil',target)的返回值是7,Pos('hurbet',target)的返回值是0。&nbsp;&nbsp;<br/><br/><strong>◇[DELPHI]关于处理注册表 <br/></strong>uses Registry; <br/>var reg:Tregistry; <br/>reg:=Tregistry.create; <br/>reg.rootkey:='HKey_Current_User'; <br/>reg.openkey('Control Panel\Desktop',false); <br/>reg.WriteString('Title Wallpaper','0'); <br/>reg.writeString('Wallpaper',filelistbox1.filename); <br/>reg.closereg; <br/>reg.free; <br/><br/><strong>◇[DELPHI]关于键盘常量名</strong> <br/>VK_BACK/VK_TAB/VK_RETURN/VK_SHIFT/VK_CONTROL/VK_MENU/VK_PAUSE/VK_ESCAPE <br/>/VK_SPACE/VK_LEFT/VK_RIGHT/VK_UP/VK_DOWN <br/>F1--F12:$70(112)--$7B(123) <br/>A-Z:$41(65)--$5A(90) <br/>0-9:$30(48)--$39(57)</p>
<p><br/><strong>◇[DELPHI]初步判断程序母语</strong> <br/>DELPHI软件的DOS提示:This Program Must Be Run Under Win32. <br/>VC++软件的DOS提示:This Program Cannot Be Run In DOS Mode. <br/><br/><strong>◇[DELPHI]操作Cookie</strong> <br/>response.cookies("name").domain:='http://www.086net.com'; <br/>with response.cookies.add do <br/>begin <br/>name:='username'; <br/>value:='username'; <br/>end <br/><br/><strong>◇[DELPHI]增加到文档菜单连接</strong> <br/>uses shellapi,shlOBJ; <br/>shAddToRecentDocs(shArd_path,pchar(filepath));//增加连接 <br/>shAddToRecentDocs(shArd_path,nil);//清空 <br/><br/><strong>◇[杂类]备份智能ABC输入法词库</strong> <br/>windows\system\user.rem <br/>windows\system\tmmr.rem <br/><br/><strong>◇[DELPHI]判断鼠标按键 <br/></strong>if GetAsyncKeyState(VK_LButton)&lt;&gt;0 then ... //左键 <br/>if GetAsyncKeyState(VK_MButton)&lt;&gt;0 then ... //中键 <br/>if GetAsyncKeyState(VK_RButton)&lt;&gt;0 then ... //右键 <br/><br/><strong>◇[DELPHI]设置窗体的最大显示</strong> <br/>onFormCreate事件 <br/>self.width:=screen.width; <br/>self.height:=screen.height; <br/><br/><strong>◇[DELPHI]按键接受消息 <br/></strong>OnCreate事件中处理:Application.OnMessage:=MyOnMessage; <br/>procedure TForm1.MyOnMessage(var MSG:TMSG;var Handle:Boolean); <br/>begin <br/>if msg.message=256 then ... //ANY键 <br/>if msg.message=112 then ... //F1 <br/>if msg.message=113 then ... //F2 <br/>end; <br/><br/><strong>◇[杂类]隐藏共享文件夹</strong> <br/>共享效果:可访问,但不可见(在资源管理、网络邻居中) <br/>取共享名为:direction$ <br/>访问://computer/dirction/ <br/><br/><strong>◇[Java Script]Java Script网页常用效果 <br/></strong>网页60秒定时关闭 <br/>&lt;script language="java script"&gt;&lt;!-- <br/>settimeout('window.close();',60000) <br/>--&gt;&lt;/script&gt; <br/>关闭窗口 <br/>&lt;a href="/" onclick="javascript:window.close();return false;"&gt;关闭 <br/>定时转URL <br/>&lt;meta http-equiv="refresh" content="40;url=http://www.086net.com"&gt; <br/>设为首页 <br/>&lt;a onclick="this.style.behavior='url(#default#homepage)';this.sethomepage('http://086net.com');"href="#"&gt;设为首页 <br/>收藏本站 <br/>&lt;a href="javascript:window.external.addfavorite('http://086net.com','[未名码头]')"&gt;收藏本站 <br/>加入频道 <br/>&lt;a href="javascript:window.external.addchannel('http://086net.com')"&gt;加入频道 <br/><br/><strong>◇[DELPHI]文本编辑相关 <br/></strong>checkbox1.checked:=not checkbox1.checked; <br/>if checkbox1.checked then richedit1.font.style:=richedit1.font.style+[fsBold] else richedit1.font.style:=richedit1.font.style-[fsBold]//粗体 <br/>if checkbox1.checked then richedit1.font.style:=richedit1.font.style+[fsItalic] else richedit1.font.style:=richedit1.font.style-[fsItalic]//斜体 <br/>if checkbox1.checked then richedit1.font.style:=richedit1.font.style+[fsUnderline] else richedit1.font.style:=richedit1.font.style-[fsUnderline]//下划线 <br/>memo1.alignment:=taLeftJustify;//居左 <br/>memo1.alignment:=taRightJustify;//居右 <br/>memo1.alignment:=taCenter;//居中 <br/><br/><strong>◇[DELPHI]随机产生文本色 <br/></strong>randomize;//随机种子 <br/>memo1.font.color:=rgb(random(255),random(255),random(255)); <br/><br/><strong>◇[DELPHI]DELPHI5 UPDATE升级补丁序列号</strong> <br/>1000003185 <br/>90X25fx0 <br/><br/><strong>◇[DELPHI]文件名的非法字符过滤</strong> <br/>for i:=1 to length(s) do <br/>if s in ['\','/',':','*','?','&lt;','&gt;','|'] then <br/><br/><strong>◇[DELPHI]转换函数的定义及说明&nbsp;&nbsp;<br/></strong>datetimetofiledate (datetime:Tdatetime):longint; 将Tdatetime格式的日期时间值转换成DOS格式的日期时间值&nbsp;&nbsp;<br/>datetimetostr (datetime:Tdatetime):string; 将Tdatatime格式变量转换成字符串,如果datetime参数不包含日期值,返回字符串日期显示成为00/00/00,如果datetime参数中没有时间值,返回字符串中的时间部分显示成为00:00:00 AM&nbsp;&nbsp;<br/>datetimetostring (var result string; <br/>const format:string; <br/>datetime:Tdatetime); 根据给定的格式字符串转换时间和日期值,result为结果字符串,format为转换格式字符串,datetime为日期时间值&nbsp;&nbsp;<br/>datetostr (date:Tdatetime) 使用shortdateformat全局变量定义的格式字符串将date参数转换成对应的字符串&nbsp;&nbsp;<br/>floattodecimal (var result:Tfloatrec;value: <br/>extended;precision,decimals: <br/>integer); 将浮点数转换成十进制表示&nbsp;&nbsp;<br/>floattostr (value:extended):string 将浮点数value转换成字符串格式,该转换使用普通数字格式,转换的有效位数为15位。&nbsp;&nbsp;<br/>floattotext (buffer:pchar;value:extended; <br/>format:Tfloatformat;precision, <br/>digits:integer):integer; 用给定的格式、精度和小数将浮点值value转换成十进制表示形式,转换结果存放于buffer参数中,函数返回值为存储到buffer中的字符位数,buffer是非0结果的字符串缓冲区。&nbsp;&nbsp;<br/>floattotextfmt (buffer:pchar;value:extended; <br/>format:pchar):integer 用给定的格式将浮点值value转换成十进制表示形式,转换结果存放于buffer参数中,函数返回值为存储到buffer中的字符位数。&nbsp;&nbsp;<br/>inttohex (value:longint;digits:integer): <br/>string; 将给定的数值value转换成十六进制的字符串。参数digits给出转换结果字符串包含的数字位数。&nbsp;&nbsp;<br/>inttostr (value:longint):string 将整数转换成十进制形式字符串&nbsp;&nbsp;<br/>strtodate (const S:string):Tdatetime 将字符串转换成日期值,S必须包含一个合法的格式日期的字符串。&nbsp;&nbsp;<br/>strtodatetime (const S:string):Tdatetime 将字符串S转换成日期时间格式,S必须具有MM/DD/YY HH:MM:SS[AM|PM]格式,其中日期和时间分隔符与系统时期时间常量设置相关。如果没有指定AM或PM信息,表示使用24小时制。&nbsp;&nbsp;<br/>strtofloat (const S:string):extended; 将给定的字符串转换成浮点数,字符串具有如下格式: <br/>[+|-]nnn…[.]nnn…[&lt;+|-&gt;&lt;E|e&gt;&lt;+|-&gt;nnnn]&nbsp;&nbsp;<br/>strtoint (const S:string):longint 将数字字符串转换成整数,字符串可以是十进制或十六进制格式,如果字符串不是一个合法的数字字符串,系统发生ECONVERTERROR异常&nbsp;&nbsp;<br/>strtointdef (const S:string;default: <br/>longint):longint; 将字符串S转换成数字,如果不能将S转换成数字,strtointdef函数返回参数default的值。&nbsp;&nbsp;<br/>strtotime (const S:string):Tdatetime 将字符串S转换成TDATETIME值,S具有HH:MM:SS[AM|PM]格式,实际的格式与系统的时间相关的全局变量有关。&nbsp;&nbsp;<br/>timetostr (time:Tdatetime):string; 将参数TIME转换成字符串。转换结果字符串的格式与系统的时间相关常量的设置有关。&nbsp;&nbsp;<br/><br/><strong>◇[DELPHI]程序不出现在ALT+CTRL+DEL</strong> <br/>在implementation后添加声明: <br/>function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall; external 'KERNEL32.DLL'; <br/>RegisterServiceProcess(GetCurrentProcessID, 1);//隐藏 <br/>RegisterServiceProcess(GetCurrentProcessID, 0);//显示 <br/>用ALT+DEL+CTRL看不见 <br/><br/><strong>◇[DELPHI]程序不出现在任务栏 <br/></strong>uses windows <br/>var <br/>ExtendedStyle : Integer; <br/>begin <br/>Application.Initialize;</p>
【VB】QQ群:1422505加的请打上VB好友
【易语言】QQ群:9531809  或 177048
【FOXPRO】QQ群:6580324  或 33659603
【C/C++/VC】QQ群:3777552
【NiceBasic】QQ群:3703755

30

主题

693

回帖

0

精华

钻石会员

积分
2815
发表于 2015-6-5 16:15:56 | 显示全部楼层
复制到文本文件 另保存为.html 可看
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表