实现方式有可能改变。
偏移量 类型 描述
-76 Pointer 指向虚方法表的指针(或nil)
-72 Pointer 指向接口表的指针(或nil)
-68 Pointer 指向自动化信息表的指针(或nil)
-64 Pointer 指向实例初始化表的指针(或nil)
-60 Pointer 指向类型信息表的指针(或nil)
-56 Pointer 指向字段(定义)表的指针(或nil)
-52 Pointer 指向方法(定义)表的指针(或nil)
-48 Pointer 指向动态方法表的指针(或nil)
-44 Pointer 指向包含类名的短字符串的指针
-40 Cardinal 实例的字节大小
-36 Pointer 指向祖先类的指针的指针(或nil)(指针的指针)
-32 Pointer 指向SafecallException方法入口指针的指针(或
-28 Pointer AfterConstruction方法入口(指针)
-24 Pointer BeforeDestruction方法入口(指针)
-20 Pointer Dispatch方法入口(指针)
-16 Pointer DefaultHandler方法入口(指针)
-12 Pointer NewInstance方法入口(指针)
-8 Pointer FreeInstance方法入口(指针)
-4 Pointer 析构函数Destroy的入口地址(指针)
0 Pointer 用户自定义的第一个虚方法入口(指针)
4 Pointer 用户自定义的第二个虚方法入口(指针)
... ... ...
Class reference types(类引用)
类引用(值)存储为一个32位指针,它指向一个类的虚方法表(
Variant types(Variant类型)
variant存储为一个16字节的记录,它包含类型码,以及类型码指明的数据类型的值VMT也包含很多字段,它们 nil)(指针的指针) VMT)。 (或值的引用)因为在将来这种 。System
- 159 -
Memory management
和Variants单元定义了variant常量和类型。
TVarData类型表示一个variant变量的内部结构(在Windows下,它和COM以及Win32 API中使用的variant是相同的),它能用来对variant变量进行类型转换,以便访问变量的内部结构。
TVarData记录的VType字段包含了类型码,它存储在较低的12个位中(每个位由varTypeMask常量定义)。并且,可能设置varArray位用于表明variant是数组,也可能设置varByRef位用于表明variant存储的是值的引用而不是值本身。
TVarData的Reserved1、Reserved2和Reserved3字段没有使用。
TVarData记录剩余8个字节的内容取决于VType字段。若既没有设置varArray位也没有设置varByRef位,则它包含指定类型的值。
若设置了varArray位,variant包含一个指向TVarArray结构的指针,TVarArray定义了数组,每个数组元素的类型由Vtype字段的varTypeMask位指明。
若设置了varByRef位,variant包含一个值的引用,它的类型由
位指明。
varString类型码是私有的,包含此类型的variant不能传给非
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-23665-119.html
果然全宇宙最火