Delphi AES加密(转)
摘要:(**************************************************************)(*AdvancedEncryptionStandard(AES)*)(*InterfaceUnitv1.3*)(**)(*Copyright(c)2002JorlenYoung*)(**)(*说明:*)(*基于ElASE.pas单元封装*)(**)(*这是一个AES加密算法的标准接口。*)(*调用示例:*)(*ifnotEncryptStream(src,key,TStream(Dest),keybit)then*)(*showmessage('encryp
阅读全文
posted @
2012-08-30 18:35
garfieldtom
阅读(8928)
推荐(0) 编辑
Delphi 远程调试(转)
摘要:转自:http://www.cnblogs.com/sandman/archive/2010/12/05/1897063.html自己的开发机器称为主机,运行程序的机器称为目标机;一、在主机编译执行程序1、project->options->linker中的EXE and DLL options选项组中的include remote debug symbols打上勾这样就可以生成rsm为扩展名的文件,该文件名称于你的项目同名。2、project->options->Debugging中的勾可以全部选上,这是在你的程序支持debug(正式发布产品时要去掉这些选项,Delp
阅读全文
posted @
2012-08-08 14:27
garfieldtom
阅读(4101)
推荐(0) 编辑
在Delphi中根据SQL Server表名和表描述生成SQL语句
摘要:直接上代码吧:1functionGetSQLByTableName(sTableName:string):String;2var3aDataSet:TDataSet;4s:String;5aField:TField;6aFieldList,aFieldDescriptionList:TList<string>;7functionGetFieldDescription(sTable,sField:string):String;8var9sSQL:String;10begin11sSQL:='select sys.extended_properties.value from s
阅读全文
posted @
2012-08-01 10:54
garfieldtom
阅读(1537)
推荐(0) 编辑
cxGrid失去焦点后如何继续保持选中单元的高亮状态
摘要:cxGrid失去焦点后如何继续保持选中单元的高亮状态,找了好久才找到一个答案:SolutionThere is no need to adjust those options. The solution is very simple: You should define a new style (an Item of the Style Controller) which defines the necessary colors for highlighting and use it both for the View's Styles.Inactive and Styles.Sele
阅读全文
posted @
2012-07-31 20:31
garfieldtom
阅读(1815)
推荐(0) 编辑
CodeSite日志使用
摘要:CodeSite日期记录对于调试程序而言非常方便,我们可以同时开启动态日志监视和文件日志:var Dest: TCodeSiteDestination; begin Dest := TCodeSiteDestination.Create( Self );//开启文件日志Dest.LogFile.Active := True; Dest.LogFile.FileName := 'MyFirstLog.csl'; Dest.LogFile.FilePath := '$(MyDocs)'; //开启动态日志监视Dest.Viewer.Active := True; /
阅读全文
posted @
2012-06-22 17:15
garfieldtom
阅读(1055)
推荐(0) 编辑
dxDBTreeView自动删除数据问题
摘要:如果在一个窗体中使用dxDBTreeView没有问题,窗体关闭时一切正常。但如果这个设置这个窗体的Parent为一个PageControl(我使用Raize的),那么在这个Page关闭的时候dxDBTreeView连接的数据会全部自动删除!被这个问题困扰了好久,只能将含dxDBTreeView的窗体直接创建显示,后来总觉得跟程序风格不一致,于是想修改dxDBTreeView的代码,又觉得也不方便,还要费时费力地去调试跟踪。后来找了个折中的办法,在dxDBTreeView的OnDeletion事件中:.......tvClassDeletion(Sender: TObject; Node: TT
阅读全文
posted @
2012-06-05 07:44
garfieldtom
阅读(938)
推荐(0) 编辑
Delphi字符串指针操作
摘要:这几天做一个项目,调用C的DLL,C里面传递字符串是char *,而Delphi中则是PChar,(从D2009开始支持Unicode后则对应的是PAnsiChar).使用过程中发现个问题需要注意,直接上代码吧:procedure TForm6.Button1Click(Sender: TObject);var s:AnsiString; p:PAnsiChar;begin s:=LabeledEdit1.Text; //LabeledEdit1.Text内容是123456 p:=PAnsiChar(s); ShowMessage(PAnsiChar('123456')); /
阅读全文
posted @
2011-07-07 15:44
garfieldtom
阅读(590)
推荐(0) 编辑
Delphi中关于Move的操作
摘要:在Delphi中,Move是这样来定义的:procedure Move(const Source; var Dest; Count: Integer);这几天程序用到一个缓冲数据的截取,定义了一个PAnsiChar,然后来截取其中的一部分数据,发现总有问题.vard,s:PansiChar;begins:='123456';d:=ansiStrAlloc(3);Move(s,d,3);ShowMessage(d);StrDispose(d);后来在网上搜索了一下,发现问题出在move的操作上,正确的做法应该是:vard,s:PansiChar;begins:='1234
阅读全文
posted @
2011-06-04 05:45
garfieldtom
阅读(982)
推荐(0) 编辑
写入Stream
摘要:Delphi对流的操作很方便,但平时用的不多,这几天看一个传输,需要传输流信息,就简单测试了一下.(D2010)以内存流为例:var ms:TMemoryStream; ac:AnsiChar; as:AnsiString; s:String;begin ms:=TMemoryStream.Create; ms.Write($01,1);//写入一个16进制整数 ac:='a'; ms.Write(ac,1); //写入一个ansichar as:='abc'; for ac inas do //写入一个AnsiString; ms.Write(ac,1); s:=
阅读全文
posted @
2011-01-29 10:09
garfieldtom
阅读(407)
推荐(0) 编辑
设置TWebbroser内容问题
摘要:我们可以使用navigate方法来使TWebbrowser显示指定的内容,也可以使用下面的方法来设置TWebbrowser的显示内容:var Doc: IHTMLDocument2;begin Doc := WebBrowser.Document as IHTMLDocument2; if Assigned(Doc) and Assigned(Doc.body) then Doc.body.inn...
阅读全文
posted @
2010-12-03 12:06
garfieldtom
阅读(386)
推荐(1) 编辑
Delphi使用Python来解码邮件
摘要:估计很多人和我一样,在使用Indy的时候都会受不了众多的Bug,不得不边使用边修改。近来一直使用Indy来收发邮件,从D7到D2007再到D2010,后来直接从SVN中检出一个最新版本来,让人惊喜的是新版本中修复了一些Bug,让人沮丧的是新版本中又重新引入了一些新的Bug,唉,锻炼人啊。前几天简单看了一下Python,测试了一下发现Python对邮件的处理简直简练至极!并且接收和解码上也胜Indy...
阅读全文
posted @
2010-11-15 18:54
garfieldtom
阅读(1245)
推荐(0) 编辑
再谈获取Ajax网页内容的方法
摘要:以前做过一个自动收集网页内容的工具,使用的还可以,用Indy的IdHttp组件来获取网页内容然后分析处理。现在很多网站都采用了Ajax技术,网页内容异步刷新,所以使用IdHttp组件就无法获取完整的网页内容了。我在http://www.cnblogs.com/GarfieldTom/archive/2009/12/09/1620184.html中提到了如果网页内容获取完毕后,可以获取完整的网页内容...
阅读全文
posted @
2010-09-30 11:30
garfieldtom
阅读(3450)
推荐(0) 编辑
SQL Server 存储过程/触发器中调用COM组件的方法
摘要:实施别的系统时遇到一个问题,就是在SQL Server中中使用新建服务器连接方式连接到数据库Oracle时查询和写入某个表时出错,后来想到用一个外挂的程序来操作,可需要触发条件,轮询的话涉及到及时性和网络负荷问题.到网上一搜索,发现可以在SQLServer的存储过程或触发器中调用COM组件,这就比较好解决了.首先建立一个COM服务器,只在里面写一个测试方法:Hello:[代码]可以在IDE中注册这...
阅读全文
posted @
2010-07-20 06:34
garfieldtom
阅读(738)
推荐(0) 编辑
DLL封装ReportMachine/FastReport报表
摘要:如果有报表文件兼容性问题,可以参考下面的方法来将某版本的报表封装到DLL中来使用。首先建立一个DLL工厂,然后建立一个主窗体,在窗体中放入报表相关的控件。为了传入变量,我们简单定义一个变量名称/值对应用的对象:[代码]然后定义一个输出函数:[代码]然后在需要的时候调用该DLL即可。上面代码使用了ADO,为了更通用,可以使用ClientDataSet来处理数据,在窗体中放在TDataSetProvi...
阅读全文
posted @
2010-05-21 06:13
garfieldtom
阅读(1645)
推荐(0) 编辑
Indy接收邮件中文无编码乱码问题
摘要:Indy的bug真让人受不了,遇到一个没有经过编码的中文邮件,比如:Return-Path: <sdhuahan@public.qd.sd.cn>Delivered-To: sdhuahan@public.qd.sd.cnReceived: from unknown (helo xxh)(unknown@221.0.203.213)by ws02 with SMTP; Thu, 08 ...
阅读全文
posted @
2010-04-09 15:36
garfieldtom
阅读(1051)
推荐(0) 编辑
结果集手工排序
摘要:给纤检所做一个项目,对测试报告结果需要调整测试项目的顺序,之前做的是鼠标拖放来重新排列结果集的顺序,现在客户想通过一个向上和向下的按钮来调整结果集中记录的顺序,通过测试,可以通过下面的方法来简单操作(下面仅简单说明下上移动记录的方法,向下移动方法同此,略):[代码]
阅读全文
posted @
2010-04-06 09:38
garfieldtom
阅读(386)
推荐(0) 编辑
Delphi 2010 DataSnap封装COM对象
摘要:在Delphi 2010中,DataSnap已完全可以不使用COM了.想起在windows上配置COM,就麻烦的很,如果在本机还好说,在远程要涉及到权限等诸多问题(用SocketConnection要方便一些).如果早期写的程序中有许多COM对象,我们可以通过DataSnap的封装,使用适配器模式简单地封装一下,那么在客户端就可以使用DataSnap的方式来调用远程的COM对象了,当然需要Data...
阅读全文
posted @
2010-01-28 13:23
garfieldtom
阅读(656)
推荐(0) 编辑
Delphi中的字符串压缩与解压缩
摘要:在Delphi中如果需要对字符串进行压缩与解压缩是非常简单的事,只需要uses一下zlib单元即可.ZCompressStr:压缩字符串,传人字符串,返回TBytes;ZDecompressStr:解压字符串,传人TBytes,返回字符串;定义变量:var str:String; tb:TBytes; st:TBytesStream;压缩://返回压缩结果 tb:=ZCompressStr(s...
阅读全文
posted @
2010-01-25 09:55
garfieldtom
阅读(3473)
推荐(0) 编辑
简单地为DBNavigator填加Caption
摘要:Delphi自带的DBNavigator包括许多第三方控件的DBNavigator(像Raize,DevExpress)都没有Caption属性,有时用户说我不知道这个按钮是什么意思,能不能加上个文字说明啊?当然,我们可以设置每个Button的Hint来给客户提示,但这样客户还是无法直接看到。我们可以创建一个新的控件来实现给DBNavigator增加Caption属性,但到了D2007之后,增加了...
阅读全文
posted @
2010-01-18 08:39
garfieldtom
阅读(877)
推荐(1) 编辑
Indy接收邮件可能会出现的一个Bug
摘要:最近使用Indy做的系统接收邮件,以前一直没有问题,突然出现一个访问错误,追踪到源码,发现在IdMessage.pas中有这么一段代码:第860行处 ......// S.G. 27/1/2003: Only issue X-Priority header if priority <> mpNormal (for stoopid spam filters) if Priority &l...
阅读全文
posted @
2010-01-14 13:11
garfieldtom
阅读(410)
推荐(0) 编辑