随笔分类 -  Delphi-OO研究

摘要:原始连接 http://rvelthuis.blogspot.tw/2018/01/accessing-private-methods-of-another.html 访问另一个类的私有方法 在 10.1 Berlin 之前的 Delphi 版本中,只需为类定义一个类助手并在其方法中访问这些私有项, 阅读全文
posted @ 2022-04-26 02:29 findumars 阅读(0) 评论(0) 推荐(0) 编辑
摘要:其实Managed Record有很多方便使用的场景。比如下面的就是把TStringBuilder由Class改成了Managed Record。好处就是不再需要释放了。 { Managed Record版本的StringBuilder。 Delphi在10.4开始终于支持Managed Recor 阅读全文
posted @ 2020-10-12 21:11 findumars 阅读(257) 评论(0) 推荐(0) 编辑
摘要:Delphi自从增强了RTTI后,语言的可灵活性多大增强,Delphi的dbExpress中提供了DBXJSON,和DBXJSONReflect两个单元,可提供JSON序列化 下面的例子是实现Delphi实体对象转换为JSON字符串,以及JSON字符串转换为Delphi 实体对象的示例:(在Delp 阅读全文
posted @ 2019-09-24 17:16 findumars 阅读(1567) 评论(1) 推荐(0) 编辑
摘要:Delphi通过inherited 可以调用父类的方法,但是没有提供直接调用父类的父类的方法(爷爷类),通过变通的方式实现如下: 假设父类是TFather,爷爷类TGrand,调用爷爷类的Write方法: 1 2 3 4 5 6 7 8 9 type TWriteProc=procedure of  阅读全文
posted @ 2019-09-24 17:00 findumars 阅读(317) 评论(0) 推荐(0) 编辑
摘要:通过TObject.GetInterface可以获得对象的实例实现某个接口,前提条件是必须实例化对象后才能运行GetInterface 下面的方法可获取类是否实现了某个接口,并返回接口的偏移: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 阅读全文
posted @ 2019-09-24 16:51 findumars 阅读(466) 评论(0) 推荐(0) 编辑
摘要:以往的Delphi版本,不支持接口的Weak,和UnSafe的引用,支持对象的Weak, UnSafe,而且仅在Android和Ios平台上支持。 现在Delphi XE10.1 Berlin终于增加了对接口的Weak, UnSafe的支持。 1.Weak Weak引用,不影响引用计数器,但是如果对 阅读全文
posted @ 2019-09-24 16:48 findumars 阅读(533) 评论(0) 推荐(0) 编辑
摘要:如果你有SDK的编程经验,就一定应该知道在创建窗口时需要指定窗口类,窗口类中的一种重要的参数就是窗口过程。任何窗口接收到的消息,都是由该窗口过程来处理。 在面向对象编程中,如果还需要开发人员来使用原始的窗口过程这种面向过程的开发方式,面向对象就显得不那么纯粹了。所以,在界面编程的框架中,框架往往会隐 阅读全文
posted @ 2019-03-21 19:10 findumars 阅读(844) 评论(0) 推荐(0) 编辑
摘要:May 31, 2016 May 31, 2016 Calling a virtual method through an interface always was a lot slower than calling a static method through an interface. But 阅读全文
posted @ 2019-01-29 23:47 findumars 阅读(155) 评论(0) 推荐(0) 编辑
摘要:class helper 可能是从 Delphi 2007 增加的新语法, 因为感觉不太实用, 直到今天才测试了一下. 试过之后才知道: 挺有意思的! 基本功能就是修改已存在的类. Txxx = class helper for T... {T... 表示已存在的类} {可以替换已存在的方法} {也 阅读全文
posted @ 2018-01-06 00:34 findumars 阅读(618) 评论(0) 推荐(0) 编辑
摘要:Delphi通过inherited 可以调用父类的方法,但是没有提供直接调用父类的父类的方法(爷爷类),通过变通的方式实现如下: 假设父类是TFather,爷爷类TGrand,调用爷爷类的Write方法: type TWriteProc=procedure of Object;var WritePr 阅读全文
posted @ 2017-05-14 23:36 findumars 阅读(585) 评论(0) 推荐(0) 编辑
摘要:如何访问类的私有属性? 下面以 TPathData 为例,它有一个私有属性 PathData,储存了每一个曲线点,但一般无法修改它,需要利用下面方法,才能访问修改(若有更好的方法,歡迎分享): 一、利用 RTTI 取得类私有属性(建议使用此方法): 参考:http://blog.qdac.cc/?p 阅读全文
posted @ 2017-02-02 15:39 findumars 阅读(638) 评论(0) 推荐(0) 编辑
摘要:我经常会用 Delphi 写一些工具和应用,为了扩展方便,大部分都会做成插件形式。 迫于某些原因,我的插件不得不用其他开发工具来完成,比如 VC。 于是有个大问题需要解决:如何让 D 和 VC 互相通信、互相操作。 最普遍的做法,无非是定义一些方法,VC 写 Dll 导出这些方法,D 载入 Dll 阅读全文
posted @ 2017-02-01 06:20 findumars 阅读(452) 评论(0) 推荐(0) 编辑
摘要:这是转来的一篇文章,我自己在项目中也使用到了类似于根据类名创建类实例并调用相应函数的功能。具体代码我会在今后发布出来。 利用GetClass与RegisterClass可以实现根据字符串来实例化具体的子类,这对于某些需要动态配置程序的场合是很有用的。其他的应用如子窗体切换,算法替换等都能得到应用。 阅读全文
posted @ 2017-01-30 23:00 findumars 阅读(782) 评论(0) 推荐(0) 编辑
摘要:C++ 可以用宏定义 __FUNCTION__ 或__func__ 获取所在的函数。方便调试。 #define LOG(fmt, args...) printf("%s:"fmt,__FUNCTION__,##args) Delphi是否也能呢 ?Delphi 如何动态获取函数名称,而不是每个函数l 阅读全文
posted @ 2016-12-12 17:31 findumars 阅读(972) 评论(0) 推荐(0) 编辑
摘要:http://www.cnblogs.com/del/category/114896.html 阅读全文
posted @ 2016-11-03 22:19 findumars 阅读(474) 评论(0) 推荐(0) 编辑
摘要:在C#中有一个很有用的helper保留字,它可以让我们对已有的类添加额外功能,当时就在想delphi有这个保留字就好了,这样许多控件就不需要继承重写了.后来delphi 果然有了这个语法,到delphixe3,这个保留字就很强大了,不但class、record类型可用,现在连pascal基本类型也能 阅读全文
posted @ 2016-10-13 16:20 findumars 阅读(704) 评论(0) 推荐(0) 编辑
摘要:inherited Create(AOwner); 和直接写inherited有区别吗 有区别,inherited Create是指定调用父类的Create方法,当然你也可以inherited Destory等等, 如果直接写inherited则默认以本方法名在父类中调用 inherited就是调用 阅读全文
posted @ 2016-06-26 23:17 findumars 阅读(703) 评论(0) 推荐(0) 编辑
摘要:为什么类成员函数不能直接做为回调函数? 因为windows中,回调函数都是显式使用CALLBACk修饰符修饰,也就是_stdcall参数传递方式。_stdcall修饰的函数,参数从右至左依次压入堆栈,被调用者负责平衡堆栈。 而所有类的成员函数在定义的时候都被隐式(implicit)定义为__this 阅读全文
posted @ 2016-04-06 17:11 findumars 阅读(782) 评论(0) 推荐(0) 编辑
摘要:(1)所有数据都应该隐藏在所在的类的内部。 (2)类的使用者必须依赖类的共有接口,但类不能依赖它的使用者。 (3)尽量减少类的协议中的消息。 (4)实现所有类都理解的最基本公有接口[例如,拷贝操作(深拷贝和浅拷贝)、相等性判断、正确输出内容、从ASCII描述解析等等]。 (5)不要把实现细节(例如放 阅读全文
posted @ 2016-04-01 19:52 findumars 阅读(444) 评论(0) 推荐(0) 编辑
摘要:Delphi XE中类成员的访问权限共提供了6个关键词来用于限定访问权限:public、private、protected、published、automated strict private 、 strict protected其各自的含义为: 1. strict private:此区定义的字段或 阅读全文
posted @ 2016-04-01 18:07 findumars 阅读(1539) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示