编程手札

My Developer Knowledge Base

TArray<Byte> VS TBytes VS PByteArray

TArray is declared as "Array of Byte", as is TBytes. You missed a further very relevant type however, TByteArray (the type referenced by ...

2017-04-10 11:04:26

阅读数:794

评论数:0

修改fastreport实现页尾补空白行或打印固定行数

刚刚实现成功,“页尾剩余补空白行”和“打印固定行数”两种模式 代码: frxClass加:   //在DataBand末尾加空白行 //abcNone不启用,abcByRecordCount按记录数加,abcByFreeSpace按页面剩余空间加   TfrxAppendB...

2014-12-02 16:52:46

阅读数:11066

评论数:1

关闭RTTI,减小Delphi2010程序的尺寸

自从Delphi2010增强了RTTI反射机制后,编译出来的程序变得更大了,这是因为默认情况下 Delphi2010 给所有类都加上了RTTI信息(呵呵,不管你用不用它,好像实用价值确实不高,至少目前我不会去用的)。虽说对程序的运行速度影响不大,但会增加安装程序的大小,这也是我们不愿看到的。有没有...

2013-04-16 14:17:55

阅读数:1896

评论数:0

使用TWebBrowser时存在内存泄漏问题的解决方案

用TWebBrower不断打开多个网页,多某些版本的操作系统上运行一段时间后,发现占用系统内存达几百M,直到关闭程序后,占用的内存才能释放。 这个问题在网有很多讨论,比较多人的建议办法是用SetProcessWorkingSetSize(GetCurrentProcess(),-1,-1)处理一...

2012-03-09 12:43:51

阅读数:1700

评论数:0

慎用MonthsBetweent和MonthSpan

<br />●function MonthsBetween(const ANow, AThen: TDateTime): Integer; <br /><br />描述: <br />根据两个给定的TDateTime类型的参数ANow和AThen,M...

2011-03-21 16:04:00

阅读数:1972

评论数:0

delphi实现穿XP防火墙

<br />procedure TForm1.Button1Click(Sender: TObject);<br />var<br />   FwMgr,Profile,FwApp: variant;<br />begin<br />  ...

2010-11-20 01:10:00

阅读数:1227

评论数:0

使用ClassHelper/record helper 给类“打补丁”

<br /><br />有些时候,我们需要在现有类的基础上,给类添加一些东西<br />并且在类中protected区分的方法,成员是无法在单元外访问的,如果要调用它们该怎么办呢?<br />于是就有了以下三种方法<br /><br...

2010-11-20 01:07:00

阅读数:2744

评论数:0

fastreport中的对汉字的支持

<br />fastreport4.79的脚本编辑器:frxSyntaxMemo,fs_Syntaxmemo<br />第一个是用在TFrxAdoquery的sql编辑器中的,第二个是个独立的控件,用来支持几个常用脚本的语法加亮<br />存在的问题是:可以删除...

2010-09-25 09:03:00

阅读数:1714

评论数:1

关于D2009的DCR

<br />今天写好了地图控件,顺便研究了一下D2009的DCR格式,网上的资料很少,好在很容易就猜中了。<br />早期的Delphi,DCR只支持24*24*16色的BMP,而D2009的Tool Palette支持三种尺寸的图标,还是真彩的。<br />这...

2010-09-20 20:35:00

阅读数:835

评论数:0

在DLL中封装的VCL窗体Tab键响应的问题

<br />在DLL中的子窗体不会响应Tab按键的,这个时候就需要手动去指定Tab键的操作,但是前提是主窗体要向这个窗体发送一个消息,一个Tab键按下的消息。基本顺序是这样的:1. 主窗体用Hook技术捕获Tab按键并向活动子窗体发送一个Tab键按下的消息2. 子窗体手动定义一个Tab...

2010-09-16 01:33:00

阅读数:1182

评论数:0

从网络上下载文件的两种方法

 两种方法使用的Com函数都来源于UrlMon,记得先引用。 一、URLDownloadToFile直接下载文件到磁盘,URLDownloadToFile声明如下:function URLDownloadToFile(    Caller: IUnknown;     URL: PWideChar...

2010-04-10 16:54:00

阅读数:1729

评论数:0

修正Ehlib5.0.13的一个小问题

DBGridEh(5.0.13)当ContraColCount>0时,点击右边被锁定的列,会抛出一个下标越界的异常。修正办法:function TCustomDBGridEh.DataToRawColumn(ADataCol: Integer): Integer;begin  if RowP...

2010-03-18 01:16:00

阅读数:931

评论数:0

让ExWatcher支持UNICODE版本Delphi

ExWatcher捕捉到的信息在D2009下显示为乱码,要正常工作,需作以下修改:  1、clDbgHelp第18行:Name: array[0..1] of Char;-> AnsiChar; 2、clExWathcer第548行:Result := PChar(@pSymbol.Name...

2010-03-13 17:31:00

阅读数:785

评论数:0

郁闷了很久总算把TcxDBFilterControl中Like操作的%加上了

//检查用户设定的过滤条件,Like和Not Like操作符的,没加%的,强制在两边加上。这下终于“被人性化”了users cxDBFilterControl,cxFilterControlUtils,Variants;type TmyDBFilterControl = class(TcxDBFi...

2010-03-12 00:24:00

阅读数:1153

评论数:1

解决了两个ActiveX Form的小问题

B/S虽是主流,不过ActiveX Form仍不能少。今天一下碰到了两个来自ActiveX Form的问题,以下是解决方法。 一、Delphi 2009生成的ActiveX Form如何应用ThemeD2009创建的ActiveX Project,Option里的Theme选项是禁用的,在浏览器中...

2010-01-27 15:30:00

阅读数:3274

评论数:2

刚写好的读取多网卡IP地址的函数

虽然现在一机多网卡已经很普遍(像Notebook带有线、无线、蓝芽等),但是找一个现成的能够一次过读出所有网卡IP地址的函数实在是难,无奈自己写了一个,好东西谁用谁知道。//uses WinSock;type PAddrInfoW = ^ADDRINFOW; ADDRINFOW = recor...

2009-11-28 23:54:00

阅读数:1338

评论数:0

Indy10.2.5的危险做法

为了排查一个Bug今天无意看了看Indy源码,结果吓了一跳。TIdIOHandler.ReadLongWord函数用于读取通讯数据并转换成LongWord类型返回,它做用了一种危险的做法可能会导致数据传输不正确。函数源码如下:function TIdIOHandler.ReadLongWord(A...

2009-11-20 10:49:00

阅读数:3841

评论数:8

关闭Delphi 2010 RTTI的方法

今日见到的,虽然未用上D2010不过先记录下来。扩充的RTTI信息将使编译生成的文件大小巨幅增大,而如下是关闭RTTI的方法:There are some options which reduce the final executable size somewhat:{$WEAKLINKRTTI ...

2009-09-02 18:16:00

阅读数:2949

评论数:3

模仿Chrome、TW3的主窗口框架

草草写就的模仿Chrome、TW3的主窗口框架,见下图:<!--google_ad_client = "pub-5395599807454886";/* 728x90, 创建于 09-4-19 */google_ad_slot = "3527615303&quo...

2009-04-27 10:46:00

阅读数:1125

评论数:1

修正Ehlib在RAD2009下的导出Excel的问题

TDBGridEh在D2009下导出的Excel文件打不开,今天把问题修正了,问题出在TDBGridEhExportAsXLS.WriteStringCell的函数上,把参数声明const AValue: string改成const AValue: AnsiString即可。另外,还发现移动邮箱的...

2009-04-13 14:32:00

阅读数:1090

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭