
Delphi
tg2003
这个作者很懒,什么都没留下…
展开
-
delphi读写XML
XML文件内容;xml version="1.0" encoding="GB2312"?>我的书> 漫画 作者="小飞"> 书名>火影忍者书名> 价格>100价格> 漫画> 漫画 作者="大飞"> 书名>死神书名> 价格>100价格> 漫画> 漫画 作者="阿斗"> 书名>天牢书名>原创 2009-01-11 09:34:00 · 902 阅读 · 0 评论 -
PerlRegex堆栈溢出的问题
PerlRegex一直用得很顺手,但今天晚上却老是出现堆栈溢出的问题,调整了Delphi 的Max stack size后,仍然解决不了。 后来发现是正则表达式的问题,具体细节问题还不太清楚 我一般使用“((.|/n)+?)”来匹配多行文本,而出现堆栈溢出的地方就是因为我使用了这个正则表达式,后将“((.|/n)+?)”改为“(.+?)”,并设置PerlRegex的Option为[原创 2010-01-01 00:14:00 · 732 阅读 · 0 评论 -
使用PerlRegex出现“Stack overflow”堆栈溢出的问题
正 文: 今天在编译Delphi程序时,执行一个内存记忆体的时候,提示:Project.exe raised exception class EStackOverflow with message : Stack overflow.这是堆栈溢出错误。 原因就是字符串所存储的内容超过DELPHI系统堆栈默认的大小 16*100000 。我们可以转载 2009-12-31 23:16:00 · 1043 阅读 · 0 评论 -
TListView控件拖拽的问题
控件事件顺序:先执行DragOver事件,后执行DragDrop事件 var ListItem:TListItem; procedure TForm1.ListView1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var原创 2010-01-02 10:54:00 · 822 阅读 · 0 评论 -
delphi获取系统安装的默认浏览器
function TRATServer.GetDefaultBrowser:string;//获取默认浏览器varreg: TRegistry;beginreg := TRegistry.Create;tryreg.RootKey := HKEY_CLASSES_ROOT;reg.OpenKey(‘HTTP/shell/open/ddeexec/Application’,false);result原创 2010-03-20 04:00:00 · 2110 阅读 · 0 评论 -
一个等待Winexec执行完成后再继续执行后面代码的函数
//CMD 要执行的文件路径//Visiable 是否显示窗口Function WinExecExW(CMD:Pchar; Visiable:integer):DWORD;var StartupInfo : TStartupInfo; ProcessInfo : TProcessInformation;begin FillChar( StartUpInfo, SizeOf原创 2010-03-22 20:54:00 · 4375 阅读 · 0 评论 -
在 Delphi 中调用系统的手形鼠标指针
在主窗体的OnCreat事件中加入下列代码:var C: HCURSOR;begin C := LoadCursor(0, IDC_HAND); if C end;原创 2010-01-12 02:33:00 · 1545 阅读 · 0 评论 -
Delphi中WebBrowser判断页面及JS是否加载完成
<br />时间很完了,但问题总算解决了。<br /> <br />在一个程序中需要判断WebBrowser打开的页面是否加载完成,通常的做完是使用Busy属性,代码如下:<br /> <br />while WebBrowser1.Busy do<br /> Application.ProcessMessages;<br /> <br />这个访问对于访问纯Html的页面时是一点儿问题都没有的,但有些页面在设计时为了不影响打开速度,是让html代码优先显示,然后再运行js代码或框架代码,由于我要访问原创 2011-03-19 04:35:00 · 7202 阅读 · 0 评论 -
在进行文字自绘时,自动换行打印
<br />DrawText( Canvas.Handle, PChar( s ), Length( s ), rect, DT_WORDBREAK );原创 2011-03-24 22:32:00 · 834 阅读 · 0 评论 -
在Delphi中操作Mysql
<br />以前在VC中使用过MySQL,当时是找的一个现成的C++ MySQL类。最近在Delphi中又需要操作Mysql,最初找了个封闭过的类,但已经是七八年以前的程序了,我机器上装的是MySQl5.1,使用了5.1中的libmySQL.dll(2.25MB)。连接正常、查询一个字段正常,但查询两个字段就只能获取第一个字段的值,读第二个字段的值就程序异常。<br /> <br />没办法,又重新找了个接口,不过没有封闭,只有自己慢慢学着调用了。<br /> <br />http://www.audio-原创 2011-03-29 00:53:00 · 1790 阅读 · 0 评论 -
使用cnvcl中的TCnIp提取IP段
var IP:TCnIp; i:Integer; CurIP:string;begin IP := TCnIp.Create(nil); IP.IPAddress := '192.168.0.1'; CurIP := IP.IPAddress; while CurIP '192.168.255.255' do begin mmo1.Lines.Add( CurIP ); CurIP :=原创 2011-03-29 05:58:00 · 937 阅读 · 0 评论 -
WinAPI: IsIconic、IsZoomed - 分别判断窗口是否已最小化、最大化
//声明:<br />IsIconic(<br /> hWnd: HWND {窗口句柄}<br />): BOOL;<br /><br />IsZoomed(<br /> hWnd: HWND {窗口句柄}<br />): BOOL;<br />原创 2011-03-27 21:40:00 · 1700 阅读 · 1 评论 -
还是获取网页的问题,不过是多线程
<br />09年我在这个问题上折腾了大半年,还因此写了篇博文[这下该不会阻塞了吧],最初的是想实现多线程下载网页源码,但经过对HTTP协议的学习,发现只有支持断点继传的网站才用得上多线程下载,因此又把需求放在批量快速下载网页源码上,比如我同时需要访问100个网页,如果用IdHttp就头大了,Idhttp就连访问302页面也会出现异常,调试起来很麻烦。而用自己写的TWinHttp类,recv函数阻塞的问题是能解决了,但如果短时间频繁的获取网页源码,50%以上的访问都会出现connect失败和recv超时原创 2011-04-08 05:13:00 · 1335 阅读 · 1 评论 -
在TThread对象中使用互斥量
<br />用TThread以数组的方式做了个线程池,但在TThread中需要累加一个数值,如果未使用互斥量的话,那个数值可能一直累加不上去。<br />分别参考了http://www.cnblogs.com/railgunman/archive/2010/11/06/1870867.html和http://www.cnblogs.com/del/archive/2009/02/13/1390295.html,可以通过Win32函数CreateMutex和使用Delphi的TMutex来实现。<br />原创 2011-04-14 01:14:00 · 1193 阅读 · 0 评论 -
为uThreadPool增加线程池等待功能
<br />unit uThreadPool;{ aPool.AddRequest(TMyRequest.Create(RequestParam1, RequestParam2, ...)); }interfaceuses Windows, Classes;// 是否记录日志// {$DEFINE NOLOGS}type TCriticalSection = class(TObject) protected FSection: TRTLCriti原创 2011-04-15 12:42:00 · 1635 阅读 · 1 评论 -
什么丰富的第三方控件,都是浮云
TNND,看上了Delphi方便的界面设计以及丰富的第三方控件,才用上了Delphi。用了几个月后才发现,这些第三方控件都是浮云。 其实早就听人说,慎用Delphi的第三方控件,使用第三方控件可能会出现些莫名其妙的问题,所以对第三方控件也比较警惕。到目前为止,用得最多的是ICS这个组件包,而且经常用到的也只是其中的HttpCli控件。 但这几天发现程序里有内存泄漏,自己一直不知道原创 2009-11-05 02:57:00 · 1397 阅读 · 3 评论 -
给动态控件添加事件
由于要为ListView控件添加一些功能,所以就新建了一个类来扩展ListView的功能。在自己创建的这个类里,添加的第一个事件是MouseMove,这个事件我在类中的声明为: procedure MouseMove(Shift: TShiftState; X, Y: Integer); override; 随后添加实现函数: procedure TMyListView.M原创 2009-10-15 16:55:00 · 692 阅读 · 0 评论 -
为控件创建MouseEnter/MouseLeave事件
unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TURLLabel = class(TLabel) procedure WndProc(var Message : TMessage); overr原创 2009-10-13 20:28:00 · 824 阅读 · 0 评论 -
Delphi 与正则表达式
Delphi 与正则表达式http://www.cnblogs.com/del/category/113551.HTML原创 2009-01-13 09:35:00 · 675 阅读 · 0 评论 -
用Delphi实现智能化Ping命令功能
用Delphi实现智能化Ping命令功能2007-11-08 14:21《软件报》28期众所周知,Ping命令是Windows系统自带的一个针对TCP/IP协议的可执行命令,其主要作用是通过发送数据包并接收应答信息来检测两台计算机之间的网络是否连通。当网络出现故障时,可以用这个命令来检测故障和确定故障地点。但在MS-DOS方式下执行此命令,而且每秒钟执行一次Ping操作,显得似乎有些另类,今天,我原创 2009-01-20 08:04:00 · 1585 阅读 · 0 评论 -
WebBrowser 操作记要
http://www.cnblogs.com/del/archive/2008/12/28/993840.html原创 2009-01-18 06:06:00 · 555 阅读 · 0 评论 -
delphi7 手动安装 indy10.2.3
版本:indy10.2.3经delphi7下的安装成功,delphi11和delphi6的安装没有试用【自动安装】Lib/Fulld7.bat双击运行即可。自动会把bpl文件拷到C:/windows/system32重新打开delphi7会自动加载 dclIndyCore70.bpl dclIndyProtocols70.bpl【手工安装】1.win原创 2009-02-20 02:27:00 · 4289 阅读 · 0 评论 -
delphi中用socket解析域名获得IP地址
需引用WinSock单元 procedure TForm1.btn1Click(Sender: TObject);var WSAData:TWSAData; Socket1:TSocket; Addr:TSockAddr; Re:Integer;begin //初始化WinSock if (WSAStartup(M原创 2009-02-20 23:50:00 · 3251 阅读 · 0 评论 -
Delphi取得网页内容的另一种办法
初步了解了一下HTTP1.1 小试了一下,利用TcpClient控件发送HTTP1.1命令到IIS后取得网页内容。unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Sockets;type TFor原创 2009-02-26 20:19:00 · 971 阅读 · 0 评论 -
delphi中用dbexpress连接MySql5
解决:http://www.justsoftwaresolutions.co.uk/delphi/dbexpress_and_mysql_5.html有解决方案。支持5.0.x版本。下载后的配置在/delphi7/dbexpress/dbxdrivers.ini 添加[MYSQL5]节:[MYSQL5]GetDriverFunc=getSQLDriverMYSQL50LibraryName=dbx原创 2009-04-30 02:43:00 · 4127 阅读 · 4 评论 -
在Delphi中动态调用C++的DLL
/*--------------------------*/VC中的.H代码:/*--------------------------*/#ifndef CFUN_H#define CFUN_Hextern "C" __declspec(dllexport) int add(int a, int b);#endif /*--------------------------*/原创 2009-04-30 02:45:00 · 1324 阅读 · 0 评论 -
在Delphi感知控件中显示"(VARBYTES)"的解决办法
在Delphi中使用dbexpress来连接Mysql,并通过感知控件来显示数据库中的内容,但在将TSQLConnection、TSQLDataSet和TDataSource的属性都设置好后,在感知控件TDBEdit中却只能显示数值类型的字段记录,最后百度了一下,解决方法如下: /*------------------------------------------------------原创 2009-04-30 20:54:00 · 1812 阅读 · 0 评论 -
delphi中用api创建多线程的简单例子
procedure MyThread; stdcall;begin while True do begin end;end;procedure Func;var hThread:THandle; ThreadId:Cardinal; str:string;begin str := 123; hT原创 2009-06-08 01:45:00 · 1244 阅读 · 0 评论 -
Delphi中的一个文件下载函数
function DownloadFile(Source, Dest: string): Boolean; begin try Result := UrlDownloadToFile(nil, PChar(source), PChar(Dest), 0, nil) = 0; except Result := False; end;end;proce原创 2009-08-22 03:37:00 · 971 阅读 · 0 评论 -
Delphi显示和隐藏窗体
一个很简单的问题,但我凭我学习C++/VC一年多,接触Delphi的时间也不短了,但仍然写不出来。本来以为,不就是将Form1.Show和Form1.Hide么,但却就是达到不到自己想要的结果这个问题倒不用作深入研究了,到是让我发现,Delphi也不是信手摘来,什么都是那么容易的,以为自己有点儿VC的底子,就小看了Delphi。最近一段时间一直在用Delphi,但却没什么长进,看来是没原创 2009-09-07 23:33:00 · 3192 阅读 · 0 评论 -
Delphi常用代码汇总
◇[DELPHI]产生鼠标拖动效果通过MouseMove事件、DragOver事件、EndDrag事件实现,例如在PANEL上的LABEL:var xpanel,ypanel,xlabel,ylabel:integer;PANEL的MouseMove事件:xpanel:=x;ypanel:=y;PANEL的DragOver事件:xpanel:=x;ypanel:=y;LABEL的MouseMove原创 2009-09-07 23:13:00 · 719 阅读 · 0 评论 -
给构件添加 MouseLeave 事件
我不明白为何 Borland 的 Delphi 控制不支持 mouse leave 事件.下面是一个简易的例子,它不仅示范了怎样让 TIamge 控制实现 MouseLeave 事件,而且也示范了怎么样建立一个简单的 Delphi 构件. { Delphi 编程新手注意的问题: 本例是一个 Pascal 单元,请用 MyImg.pas 保存此单元.例子中的方法可应用于其它控制,所转载 2009-10-11 00:47:00 · 1006 阅读 · 0 评论 -
在Delphi中WaitForMultipleObjects的使用
<br />procedure ThreadTest;stdcall;var Handles:TWOHandleArray; //Handle:THandle; Test:TTest; i:Integer;begin for i := 0 to 10 do begin Test := TTest.Create(False); Handles[i] := Test.Handle; end;原创 2011-04-14 12:10:00 · 3037 阅读 · 0 评论