问题delphi的rtti机制浅探(积分100,回复21,阅

问题delphi的rtti机制浅探(积分100,回复21,阅

ID:1452047

大小:67.00 KB

页数:20页

时间:2017-11-11

问题delphi的rtti机制浅探(积分100,回复21,阅_第1页
问题delphi的rtti机制浅探(积分100,回复21,阅_第2页
问题delphi的rtti机制浅探(积分100,回复21,阅_第3页
问题delphi的rtti机制浅探(积分100,回复21,阅_第4页
问题delphi的rtti机制浅探(积分100,回复21,阅_第5页
资源描述:

《问题delphi的rtti机制浅探(积分100,回复21,阅》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、问题:Delphi的RTTI机制浅探(积分:100,回复:21,阅读:352)分类:ObjectPascal(版主:menxin,cAkk)来自:savetime,时间:2004-1-210:48:00,ID:2420610[显示:小字体

2、大字体]Delphi的RTTI机制浅探savetime2k@yahoo.com 2004.1.20http://savetime.delphibbs.com目录===============================================================================⊙RTTI简介⊙类(class)和VMT的

3、关系⊙类(class)、类的类(classofclass)、类变量(classvariable)的关系⊙TObject.ClassType和TObject.ClassInfo⊙is和as运算符的原理⊙TTypeInfo–RTTI信息的结构⊙获取类(class)的属性(property)信息⊙获取方法(method)的类型信息⊙获取有序类型(ordinal)、集合(set)类型的RTTI信息⊙获取其它数据类型的RTTI信息===============================================================================本文排版格式为: 

4、 正文由窗口自动换行;所有代码以80字符为边界;中英文字符以空格符分隔。(作者保留对本文的所有权利,未经作者同意请勿在在任何公共媒体转载。)正文===============================================================================⊙RTTI简介===============================================================================RTTI(Run-TimeTypeInformation)翻译过来的名称是“运行期类型信息”,也就是说可以在运行期获得数据类型

5、或类(class)的信息。这个RTTI到底有什么用处,我现在也说不清楚。我是在阅读Delphi持续机制的代码中发现了很多RTTI的运用,只好先把RTTI学习一遍。下面是我的学习笔记。如果你发现了错误请告诉我。谢谢!Delphi的RTTI主要分为类(class)的RTTI和一般数据类型的RTTI,下面从类(class)开始。===============================================================================⊙类(class)和VMT的关系===========================================

6、====================================一个类(class),从编译器的角度来看就是一个指向VMT的指针(在后文用VMTptr表示)。在类的VMTptr的负地址方向存储了一些类信息的指针,这些指针的值和指针所指的内容在编译后就确定了。比如VMTptr-44的内容是指向类名称(ClassName)的指针。不过一般不使用数值来访问这些类信息,而是通过System.pas中定义的以vmt开头的常量,如vtmClassName、vmtParent等来访问。类的方法有两种:对象级别的方法和类级别的方法。两者的Self指针意义是不同的。在对象级别的方法中Self指向对象地址

7、空间,因此可以用它来访问对象的成员函数;在类级别的方法中Self指向类的VMT,因此只能用它来访问VMT信息,而不能访问对象的成员字段。===============================================================================⊙类(class)、类的类(classofclass)、类变量(classvariable)的关系===============================================================================上面说到类(class)就是VMTptr。在Del

8、phi中还可以用classof关键字定义类的类,并且可以使用类的类定义类变量。从语法上理解这三者的关键并不难,把类当成普通的数据类型来考虑就可以了。在编译器级别上表现如何呢?为了简化讨论,我们使用TObject、TClass和TMyClass来代表上面说的三种类型:type TClass=classofTObject;var TMyClass:TClass; MyObject:TObject;be

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。