随笔分类 -  DELPHI

摘要:1. 使控件产生圆角的方法(包括Tform)procedure TfrmMessageDlg.SetBorder(AControl: TWinControl);const ConRound = 5;var LHrgn: HRGN;begin LHrgn := 0; GetWindowRgn(AControl.Handle, LHrgn); DeleteObject(LHrgn); LHrgn :=... 阅读全文
posted @ 2010-07-28 13:31 Enli 阅读(937) 评论(0) 推荐(1)
摘要:TProxySettingCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->unituProxySetting;interfaceusesClasses,SysUtils;typeTProxySetting=classprivateFIsApplyProxySettingsToIE:Boolean;FIsEnableProxy:Boolean;FProxyType:Byte;FProxyHost:String;FProxyDomain:Stri 阅读全文
posted @ 2010-07-16 20:11 Enli 阅读(985) 评论(0) 推荐(0)
摘要:FTP传输Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--unitTransferThread;//////////////////////////////////////////////////////////////////////////////... 阅读全文
posted @ 2010-07-16 19:57 Enli 阅读(3922) 评论(0) 推荐(0)
摘要:1. XML文件操作中的selectNodes使用的是Xpath语法,可以参考:http://www.w3school.com.cn/xpath/index.asp 例如这样的选择语法:selectNodes('//data/r[contains(@reportType,"季报") and (@reportType != "三季报")]') 这样{‘年报’,‘中报’,‘一季报’,‘第二季报’,‘第三季报’,‘第四季报’,‘三季报’} 中只会选择{‘一季报’,‘第二季报’,‘第三季报’,‘第四季报’}的节点代码 Code highlight 阅读全文
posted @ 2010-06-24 18:11 Enli 阅读(325) 评论(0) 推荐(0)
摘要:这里只举个纵轴的例子,利用Delphi的VCL控件的原有代码还是比较方便的,代码如下:MouseWheelCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--procedureTfrmMain.FormMouseWheel(Sender:TObject;S... 阅读全文
posted @ 2010-06-13 10:51 Enli 阅读(492) 评论(0) 推荐(0)
摘要:1.关于sizeof同样的代码var LWindCode : array [0..15] of char;begin showmessage(inttostr( sizeof(LWindCode)));end;在Delphi7和Delphi2009下结果分别是16/32,为什么?这是因为widechar和AnsiChar的问题,2009默认的是WideChar了,而Delphi7是AnsiChar... 阅读全文
posted @ 2010-05-20 15:14 Enli 阅读(452) 评论(0) 推荐(1)
摘要:今天用TDictionary,发现居然一个成员的集合遍历里有2次。。。。就是下面简单的遍历var LPair : TPair<Integer,TForm>;begin for LPair in FFormDictionary do begin TForm(LPair.Value).free; end;导致FFF0006C的内存溢出!,网上搜索了一下,解决方法如下:打开Generics.... 阅读全文
posted @ 2010-05-17 13:15 Enli 阅读(866) 评论(0) 推荐(0)
摘要:代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--unitufrmGetFunctionDefine;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,... 阅读全文
posted @ 2010-05-14 08:48 Enli 阅读(2174) 评论(0) 推荐(0)
摘要:最近帮朋友编了个VPN客户端,摸着石头过河,磕磕碰碰的搞了几天,觉得应该总结一下.程序的主要过程如下:1.RasSetEntryProperties创建VPN连接, RasDial拨号,RasHangUp挂断,RasDeleteEntry删除连接2.用HTTP组件,获取服务器设置3.RASGetProjectionInfo获取VPN连接的IP,并后台运行ROUTE命令,加载路由4.用SOCKET作... 阅读全文
posted @ 2009-09-20 14:09 Enli 阅读(4138) 评论(1) 推荐(0)
摘要:备忘一下[代码] 阅读全文
posted @ 2009-04-07 08:45 Enli 阅读(1053) 评论(0) 推荐(0)
摘要:最近研究了一下HOOK技术,想抓取某些游戏的包,因此需要注入DLL,结果老是有异常崩溃。因此找了找解决方法,记录如下:首先做一个有异常崩溃的控制台程序:[代码]这代码里面是一个除0的异常。然后来看运行结果:异常CODE:0X000008e ADDRESS:0x0000000000407C8F查看异常代码的位置,首先要生产MAP文件:Projects->Options->Linker-&... 阅读全文
posted @ 2009-01-15 18:03 Enli 阅读(1370) 评论(0) 推荐(0)
摘要:1. DLL的资源释放问题[代码]这种释放方式不能在动态载入下用,即loadLibrary方式载入,HELP帮助说明如下:Do not use ExitProc in a dynamically loaded package. This procedure is called when the process halts, not when a package or DLL is unloaded... 阅读全文
posted @ 2008-12-17 13:28 Enli 阅读(325) 评论(0) 推荐(0)
摘要:最近写了一个多线程进行数据库链接的程序的时候,发现一个错误:"File or directory does not exist. File: PDOXUSRS.NET"。追究其原由,发现是TSession的问题。大家都知道要用BDE进行多数据库编程,必须为各个TDatabase设置不同的TSession,其中重要的设置有SessionName、NetFileDir、PrivateDir,必须保持不... 阅读全文
posted @ 2008-12-11 10:54 Enli 阅读(1256) 评论(0) 推荐(0)
摘要:重新看了一下消息的处理流程,流程如下:其派发处理过程详细如下:注意:TWinControl里面WndProc有调用系统API DefWindowProc,该函数调用缺省的窗口过程来为应用程序没有处理的任何窗口消息提供缺省的处理。而TWinControl里面DefaultHandler又调用了系统API CallWindowProc,该函数CallWindowProc将消息信息传送给指定的窗口过程。... 阅读全文
posted @ 2008-12-03 14:55 Enli 阅读(1313) 评论(2) 推荐(0)
摘要:[代码] 阅读全文
posted @ 2008-11-06 10:00 Enli 阅读(818) 评论(3) 推荐(0)
摘要:一直很不明白UDP和TCP两种协议的优劣,趁着最近要弄个简易的消息处理中心的机会,做了点试验:1. 单UDP端口的服务器,模型如下这里工作线程有一个UDP的SOCKET(即分配了一个独立的UDP端口),它发送信息给服务器,然后等待服务器返回信息,然后再发送下一个信息,即此模型是一应一答的。而服务器端,接收线程监听一固定端口来接收信息,并记录远程IP和PORT;发送线程根据记录的远程IP和PORT,... 阅读全文
posted @ 2008-10-30 10:59 Enli 阅读(443) 评论(0) 推荐(0)
摘要:1. 今天用RegisterClass的时候发现windows和classes单元都有,而DELPHI引用单元的顺序是从右到左的,所以 uses Windows,Classes,Common,BaseThread,SysUtils,abs....这样就是引用到Classes的方法 2. C#引用DELPHI作的DLL的例子 QSystem.LogFile.dll Code highl... 阅读全文
posted @ 2008-08-27 16:54 Enli 阅读(435) 评论(0) 推荐(0)
摘要:DES在C#下是由des来实现的,需要KEY和IV,其中如果KEY或者IV不足8字节,用#0 来补足 代码如下: byte[] key = new byte[8]; byte[] iv = new byte[8]; for (int i = 0;i (length(temp)-1) then key[i] :=0 else ... 阅读全文
posted @ 2008-07-10 17:03 Enli 阅读(6293) 评论(3) 推荐(1)
摘要:总结一下Windows常用的几种线程同步技术。 1.Critical Sections(临界段),源代码中如果有不能由两个或两个以上线程同时执行的部分,可以用临界段来使这部分的代码执行串行化。它只能在一个独立的进程或一个独立的应用程序中使用。使用方法如下: //在窗体创建中 InitializeCriticalSection(Critical1) //在窗体销毁中 DeleteCriticalSe... 阅读全文
posted @ 2008-06-27 21:22 Enli 阅读(10655) 评论(0) 推荐(0)
摘要:最近发现以前写的代码里面TThread日志不完全,老是缺线程关闭的日志.研究了一下,发现是以前对线程理解有误,参见了一下Delphi下的Tthread代码 function ThreadProc(Thread: TThread): Integer; var FreeThread: Boolean; begin {$IFDEF LINUX} if Thread.FSuspended then... 阅读全文
posted @ 2008-06-26 11:27 Enli 阅读(875) 评论(0) 推荐(0)