随笔分类 -  Delphi-RTTI

摘要:原来可以用GetObjectProp来获取对象的属性,还有这用法,哈哈哈哈…… var SL: TStrings; UseDBTools: Boolean;begin SL := nil; if Memo is TMemo then SL := TMemo(Memo).Lines else if M 阅读全文
posted @ 2017-03-06 15:50 findumars 阅读(775) 评论(0) 推荐(0) 编辑
摘要:转自:http://blog.sina.com.cn/s/blog_53d1e9210100uke4.html 目录 ⊙ RTTI 简介⊙ 类(class) 和 VMT 的关系⊙ 类(class)、类的类(class of class)、类变量(class variable) 的关系⊙ TObjec 阅读全文
posted @ 2017-01-24 23:07 findumars 阅读(1364) 评论(0) 推荐(0) 编辑
摘要:http://ljz9425.blog.163.com/blog/static/369148572008111635253858/Delphi下的RTTI(下)2008-12-16 15:52:53| 分类: Delphi |字号 订阅目 录 ⊙ GetTypeData 函数⊙ GetPropInf 阅读全文
posted @ 2016-08-27 03:54 findumars 阅读(1431) 评论(0) 推荐(0) 编辑
摘要:界面在可配置的情况下需要读写配置文件,VCL提供了一种方式 TReader 和 TWriter 方式保存界面资源。 直接存成文本格式资源文件,只要是对象继承于TPersistent所有属性字段都能正常被初始化。同时他内部的子对象通过嵌套方式持久化。 基于这种比较简单的嵌套模式存贮方案。 1、读取配置 阅读全文
posted @ 2016-06-02 05:48 findumars 阅读(580) 评论(0) 推荐(0) 编辑
摘要:还记得David I 今年四月来盛大时,被问及“反射机制能再做得好一点吗?我们想放弃RTTI”,David I 回答“这的确是需要考虑的地方,当然RTTI我们不会放弃的”。(这个白胡子的老哥哥还真很可爱,当年Borland几经起落,唯一能看得顺眼的就是David I)。 我还以为RTTI在D2010 阅读全文
posted @ 2016-04-01 18:45 findumars 阅读(589) 评论(0) 推荐(0) 编辑
摘要:[delphi] view plain copy unit Unit_main; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,  阅读全文
posted @ 2016-03-30 20:57 findumars 阅读(2931) 评论(0) 推荐(0) 编辑
摘要:一、引子 Delphi运行期间,一个对象变量实际上是一个四字节指针,指向内存中此对象具体占据的一片区域,而区域的首个四字节又是一个指针指向该类的VMT,所有该类的实例对象的区域的首四字节指针都指向同一个VMT,故此一个VMT基本上就可以代表类本身。而每个类的VMT前面(VMT指针所指处的负偏移处)保 阅读全文
posted @ 2016-03-21 22:33 findumars 阅读(704) 评论(0) 推荐(0) 编辑
摘要:java中的反射机制使我们能够在运行期间获取运行期类的信息,那么在delphi中有没有这样的功能呢?答案是有,实现这种功能的机制在delphi中叫做RTTI,废话少说,先来一段demo: 1.先定义一个demo类,注意这个类必须要以TPersistent为基类,代码如下: Delphi代码 unit 阅读全文
posted @ 2016-03-02 22:17 findumars 阅读(523) 评论(0) 推荐(0) 编辑
摘要:去年我花了很多时间尝试用DELPHI进行基于XML的WEB应用开发。起初的设想是很美好的,但结果做出来的东西很简陋。一部分原因就在于XML到Object之间的数据绑定实现太麻烦(另一部分是因为对XSLT不熟,学习它花了很多时间)。 之前我一直是用DELPHI提供的XML Data binding来做 阅读全文
posted @ 2016-02-25 18:48 findumars 阅读(1035) 评论(1) 推荐(0) 编辑
摘要:在《强大的DELPHI RTTI--兼谈需要了解多种开发语言》一文中,我说了一下我用DELPHI的RTTI实现了数据集的简单对象化。本文将详细介绍一下我的实现方法。 首先从一个简单的例子说起:假设有一个ADODataSet控件,连接罗斯文数据库,SQL为: select * from Employe 阅读全文
posted @ 2016-02-25 18:42 findumars 阅读(1932) 评论(0) 推荐(0) 编辑
摘要:最近在写一个框架,需要用到反射,与C# java这些原生支持反射的语言不同,delphi对反射的支持相对要弱一些,但也够用了,其实C#的大部分的思想还是从 delphi而来,毕竟都是安德鲁斯的杰作。 这是只谈想法,不谈实现。Delphi7里其实就有对反射的支持了,typInfo,objAuto。基本 阅读全文
posted @ 2016-02-25 18:27 findumars 阅读(1061) 评论(0) 推荐(0) 编辑
摘要:function TForm1.ShowMethodAddress(aObj: TDerived; const sData: String) : Pointer;var aPtr : Pointer; sResult : String;begin try aPtr := aObj.MethodAdd 阅读全文
posted @ 2016-02-25 18:24 findumars 阅读(569) 评论(0) 推荐(0) 编辑
摘要:自从Delphi2010后,Delphi中的Rtti功能得到了增强。我们终于可以不用先RegisterClass,再GetClass获取类的信息了。而只是简单的通过TRttiContext.GetType或FindType来获取类,进而创建对象。虽然跟C#中的Rtti相比,还有些差距,不过这已经算是 阅读全文
posted @ 2016-02-25 18:10 findumars 阅读(511) 评论(0) 推荐(0) 编辑
摘要:堂堂C++沦落到这个地步,也实在是够可怜的。 阅读全文
posted @ 2016-02-05 06:46 findumars 阅读(319) 评论(0) 推荐(0) 编辑
摘要:摘自《Delphi深度历险》 阅读全文
posted @ 2016-02-05 06:44 findumars 阅读(285) 评论(0) 推荐(0) 编辑
摘要:Delphi2010之后的RTTI做了很大休整,现在用起来很爽了哦。甚至可以获取某些类的内部私有单元,然后为其赋值!讲这个RTTI增强的,可以参考网上的多个博客内容,我列举一下:Delphi2010RTTI的增强Delphi的Anymouse方法探秘万一的Rtti系列我这里的主要目的是挂钩某些内部私... 阅读全文
posted @ 2015-12-10 22:13 findumars 阅读(794) 评论(0) 推荐(0) 编辑
摘要:Delphi编译的文件体积增大了很多.很大一部分原因是因为Delphi2010默认提供了全信息的RTTI.每一个数据类型都有全部运行时信息.例如可以在运行时获得结构体的成员以及成员类型等.这个功能带来的方便就是我们可以写很多通用的序列化方法.也可以做一些类似OR的东西.相反这个功能带来的缺点就是文件... 阅读全文
posted @ 2015-12-10 22:00 findumars 阅读(816) 评论(0) 推荐(0) 编辑
摘要:program SvrDemo;uses Windows, WinSvc, winsock;const RegName = 'SvrDemo';var szServiceName: pchar = 'SvrDemo'; szFileName:pchar; ServiceTable: array [0 阅读全文
posted @ 2015-12-10 21:57 findumars 阅读(434) 评论(0) 推荐(0) 编辑
摘要:新建一个单元文件,填写如下代码,然后保存为 ClassInfoUnit.pas,这里定义了一个结构,用来读取指定类的信息。[delphi]view plaincopyunitClassInfoUnit;interfaceusesClasses,TypInfo;type{存放类属性的动态数组}Prop... 阅读全文
posted @ 2015-12-10 21:55 findumars 阅读(468) 评论(0) 推荐(0) 编辑
摘要:在Delphi下等这一功能很久了,虽然C#下早已实现了这一功能。但是在Dephi下尝试这项功能时还是有些许的激动。闲言少絮,直接上代码。 unit BindingDemo; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils 阅读全文
posted @ 2015-12-10 21:52 findumars 阅读(627) 评论(0) 推荐(0) 编辑

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