【分享】Delphi编程技巧集锦(一)
<p><strong>◇网络邻居复制文件</strong> <br/>uses shellapi; <br/>copyfile(pchar('newfile.txt'),pchar('//computername/direction/targer.txt'),false); <br/><br/><strong>◇产生鼠标拖动效果 <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>◇取得WINDOWS目录</strong> <br/>uses shellapi; <br/>var windir:array of char; <br/>getwindowsdirectory(windir,sizeof(windir)); <br/>或者从注册表中读取,位置: <br/>HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion <br/>SystemRoot键,取得如:C:\WINDOWS <br/><br/><strong>◇在FORM或其他容器上画线 <br/></strong>var x,y:array 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),trunc(y)); <br/><br/><strong>◇字符串列表使用 <br/></strong>var tips:tstringlist; <br/>tips:=tstringlist.create; <br/>tips.loadfromfile('filename.txt'); <br/>edit1.text:=tips; <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>◇简单的剪贴板操作 <br/></strong>richedit1.selectall; <br/>richedit1.copytoclipboard; <br/>richedit1.cuttoclipboard; <br/>edit1.pastefromclipboard; <br/><br/><strong>◇关于文件、目录操作 <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>◇处理文件属性 <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>◇执行程序外文件 <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>◇取得系统运行的进程名</strong> <br/>var hCurrentWindow:HWnd;szText:array of char; <br/>begin <br/>hCurrentWindow:=Getwindow(handle,GW_HWndFrist); <br/>while hCurrentWindow <> 0 do <br/>begin <br/>if Getwindowtext(hcurrnetwindow,@sztext,255)>0 then listbox1.items.add(strpas(@sztext)); <br/>hCurrentWindow:=Getwindow(hCurrentwindow,GW_HWndNext); <br/>end; <br/>end; <br/><br/><strong>◇关于汇编的嵌入</strong> <br/>Asm End; <br/>可以任意修改EAX、ECX、EDX;不能修改ESI、EDI、ESP、EBP、EBX。 <br/><br/><strong>◇关于类型转换函数</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>◇字符串的过程和函数</strong> <br/>Insert(obj,target,pos);//字符串target插入在pos的位置。如插入结果大于target最大长度,多出字符将被截掉。如Pos在255以外,会产生运行错。例如,st:='Brian',则Insert('OK',st,2)会使st变为'BrOKian'。 <br/>Delete(st,pos,Num);//从st串中的pos(整型)位置开始删去个数为Num(整型)个字符的子字串。例如,st:='Brian',则Delete(st,3,2)将变为Brn。 <br/>Str(value,st);//将数值value(整型或实型)转换成字符串放在st中。例如,a=2.5E4时,则str(a:10,st)将使st的值为' 25000'。 <br/>Val(st,var,code);//把字符串表达式st转换为对应整型或实型数值,存放在var中。St必须是一个表示数值的字符串,并符合数值常数的规则。在转换过程中,如果没有检测出错误,变量code置为0,否则置为第一个出错字符的位置。例如,st:=25.4E3,x是一个实型变量,则val(st,x,code)将使X值为25400,code值为0。 <br/>Copy(st.pos.num);//返回st串中一个位置pos(整型)处开始的,含有num(整型)个字符的子串。如果pos大于st字符串的长度,那就会返回一个空串,如果pos在255以外,会引起运行错误。例如,st:='Brian',则Copy(st,2,2)返回'ri'。 <br/>Concat(st1,st2,st3……,stn);//把所有自变量表示出的字符串按所给出的顺序连接起来,并返回连接后的值。如果结果的长度255,将产生运行错误。例如,st1:='Brian',st2:=' ',st3:='Wilfred',则Concat(st1,st2,st3)返回'Brian Wilfred'。 <br/>Length(st);//返回字符串表达式st的长度。例如,st:='Brian',则Length(st)返回值为5。 <br/>Pos(obj,target);//返回字符串obj在目标字符串target的第一次出现的位置,如果target没有匹配的串,Pos函数的返回值为0。例如,target:='Brian Wilfred',则Pos('Wil',target)的返回值是7,Pos('hurbet',target)的返回值是0。 <br/><br/><strong>◇关于处理注册表 <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>◇关于键盘常量名</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>◇初步判断程序母语</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>◇操作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>◇增加到文档菜单连接</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>◇判断鼠标按键 <br/></strong>if GetAsyncKeyState(VK_LButton)<>0 then ... //左键 <br/>if GetAsyncKeyState(VK_MButton)<>0 then ... //中键 <br/>if GetAsyncKeyState(VK_RButton)<>0 then ... //右键 <br/><br/><strong>◇设置窗体的最大显示</strong> <br/>onFormCreate事件 <br/>self.width:=screen.width; <br/>self.height:=screen.height; <br/><br/><strong>◇按键接受消息 <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网页常用效果 <br/></strong>网页60秒定时关闭 <br/><script language="java script"><!-- <br/>settimeout('window.close();',60000) <br/>--></script> <br/>关闭窗口 <br/><a href="/" onclick="javascript:window.close();return false;">关闭 <br/>定时转URL <br/><meta http-equiv="refresh" content="40;url=http://www.086net.com"> <br/>设为首页 <br/><a onclick="this.style.behavior='url(#default#homepage)';this.sethomepage('http://086net.com');"href="#">设为首页 <br/>收藏本站 <br/><a href="javascript:window.external.addfavorite('http://086net.com','[未名码头]')">收藏本站 <br/>加入频道 <br/><a href="javascript:window.external.addchannel('http://086net.com')">加入频道 <br/><br/><strong>◇文本编辑相关 <br/></strong>checkbox1.checked:=not checkbox1.checked; <br/>if checkbox1.checked then richedit1.font.style:=richedit1.font.style+ else richedit1.font.style:=richedit1.font.style-//粗体 <br/>if checkbox1.checked then richedit1.font.style:=richedit1.font.style+ else richedit1.font.style:=richedit1.font.style-//斜体 <br/>if checkbox1.checked then richedit1.font.style:=richedit1.font.style+ else richedit1.font.style:=richedit1.font.style-//下划线 <br/>memo1.alignment:=taLeftJustify;//居左 <br/>memo1.alignment:=taRightJustify;//居右 <br/>memo1.alignment:=taCenter;//居中 <br/><br/><strong>◇随机产生文本色 <br/></strong>randomize;//随机种子 <br/>memo1.font.color:=rgb(random(255),random(255),random(255)); <br/><br/><strong>◇DELPHI5 UPDATE升级补丁序列号</strong> <br/>1000003185 <br/>90X25fx0 <br/><br/><strong>◇文件名的非法字符过滤</strong> <br/>for i:=1 to length(s) do <br/>if s in ['\','/',':','*','?','<','>','|'] then <br/><br/><strong>◇转换函数的定义及说明 <br/></strong>datetimetofiledate (datetime:Tdatetime):longint; 将Tdatetime格式的日期时间值转换成DOS格式的日期时间值 <br/>datetimetostr (datetime:Tdatetime):string; 将Tdatatime格式变量转换成字符串,如果datetime参数不包含日期值,返回字符串日期显示成为00/00/00,如果datetime参数中没有时间值,返回字符串中的时间部分显示成为00:00:00 AM <br/>datetimetostring (var result string; <br/>const format:string; <br/>datetime:Tdatetime); 根据给定的格式字符串转换时间和日期值,result为结果字符串,format为转换格式字符串,datetime为日期时间值 <br/>datetostr (date:Tdatetime) 使用shortdateformat全局变量定义的格式字符串将date参数转换成对应的字符串 <br/>floattodecimal (var result:Tfloatrec;value: <br/>extended;precision,decimals: <br/>integer); 将浮点数转换成十进制表示 <br/>floattostr (value:extended):string 将浮点数value转换成字符串格式,该转换使用普通数字格式,转换的有效位数为15位。 <br/>floattotext (buffer:pchar;value:extended; <br/>format:Tfloatformat;precision, <br/>digits:integer):integer; 用给定的格式、精度和小数将浮点值value转换成十进制表示形式,转换结果存放于buffer参数中,函数返回值为存储到buffer中的字符位数,buffer是非0结果的字符串缓冲区。 <br/>floattotextfmt (buffer:pchar;value:extended; <br/>format:pchar):integer 用给定的格式将浮点值value转换成十进制表示形式,转换结果存放于buffer参数中,函数返回值为存储到buffer中的字符位数。 <br/>inttohex (value:longint;digits:integer): <br/>string; 将给定的数值value转换成十六进制的字符串。参数digits给出转换结果字符串包含的数字位数。 <br/>inttostr (value:longint):string 将整数转换成十进制形式字符串 <br/>strtodate (const S:string):Tdatetime 将字符串转换成日期值,S必须包含一个合法的格式日期的字符串。 <br/>strtodatetime (const S:string):Tdatetime 将字符串S转换成日期时间格式,S必须具有MM/DD/YY HH:MM:SS格式,其中日期和时间分隔符与系统时期时间常量设置相关。如果没有指定AM或PM信息,表示使用24小时制。 <br/>strtofloat (const S:string):extended; 将给定的字符串转换成浮点数,字符串具有如下格式: <br/>[+|-]nnn…[.]nnn…[<+|-><E|e><+|->nnnn] <br/>strtoint (const S:string):longint 将数字字符串转换成整数,字符串可以是十进制或十六进制格式,如果字符串不是一个合法的数字字符串,系统发生ECONVERTERROR异常 <br/>strtointdef (const S:string;default: <br/>longint):longint; 将字符串S转换成数字,如果不能将S转换成数字,strtointdef函数返回参数default的值。 <br/>strtotime (const S:string):Tdatetime 将字符串S转换成TDATETIME值,S具有HH:MM:SS格式,实际的格式与系统的时间相关的全局变量有关。 <br/>timetostr (time:Tdatetime):string; 将参数TIME转换成字符串。转换结果字符串的格式与系统的时间相关常量的设置有关。 <br/><br/><strong>◇程序不出现在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>◇程序不出现在任务栏 <br/></strong>uses windows <br/>var <br/>ExtendedStyle : Integer; <br/>begin <br/>Application.Initialize;</p> 复制到文本文件 另保存为.html 可看
页:
[1]