共2页: 上一页 1 2 
摘要: TValue是Delphi的RTTI系统的重要类型。 经过摸索,发现TValue功能强大,可以实现很多功能。本文章中所有程序采用XE3运行通过。一、TValue结构TValue定义在System.Rtti.pasTValue = record ...private FData: TValueDataend;TValue提供了一些系列方法,几乎都是操作FData.TValueData描述如下: TValueData = record FTypeInfo: PTypeInfo; // FValueData vs old FHeapData: // FHeapData doub...阅读全文
posted @ 2013-08-25 10:07 子航 阅读(2635) 评论(0) 编辑
摘要: Delphi自从增强了RTTI后,语言的可灵活性多大增强,Delphi的dbExpress中提供了DBXJSON,和DBXJSONReflect两个单元,可提供JSON序列化下面的例子是实现Delphi实体对象转换为JSON字符串,以及JSON字符串转换为Delphi 实体对象的示例:(在Delphi XE3测试通过) 1 unit Unit2; 2 3 interface 4 5 uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, V...阅读全文
posted @ 2013-08-24 17:46 子航 阅读(3951) 评论(5) 编辑
摘要: Delphi使用模块化开发,可以采用DLL或者BPL,两者的区别是BPL只能被同版本的Delphi使用,DLL可以被不同版本和不同开发工具的开发的软件调用。因此我们的软件大多使用Delphi作为界面以及部分DLL模块的开发工具。DLL模块之间通过接口方式调用。1.对象创建采用工厂模式,每个DLL负责某个对象或若干个对象的创建及释放,例如:DLL工程为http客户端(prjHttp.DLL)模块,通过DLL导出的GetHttpClientFactory获取http客户端工厂接口,通过接口创建Http客户端和释放Http客户端,工程包括3个文件:工程文件,实现单元,接口单元。调用此DLL的程序仅需阅读全文
posted @ 2013-08-19 13:51 子航 阅读(4527) 评论(2) 编辑
摘要: 在X86下,C语言函数调用,使将参数从右到左压入堆栈,栈指针减小,最后一个参数压入后,栈指针指向最后一个参数因此我们可以通过增加栈指针,读取所有的参数,X86CPU的堆栈是4字节对齐,也就是说字节性或者字型参数都是压入4字节。type TArgPtr =record private FArgPtr: PByte;classfunction Align(Ptr: Pointer; Align: Integer): Pointer; static; public constructor Create(LastArg: Pointer; Size: Integer); // ...阅读全文
posted @ 2013-05-11 16:40 子航 阅读(611) 评论(1) 编辑
共2页: 上一页 1 2