<<inside VCL>> 的疑问?? 在Delphi里,Self 应该是一个指针,它指向该对象属于的类的VMT(而不是它父类的VMT),但是为什么在<<Inside VCL>> 第180 的例子中,却说那个Self是指向TForm 的VMT指针?但我觉得好像这个SELF是指向TFORM1的,但例子运行出来又好像是对的。这里有点不解,小弟儒蠢,希望有高手指点迷津。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是指向TForm1的,你跟踪下self的值:Self: TForm1 $12F75C, FName = 'Form1';而且,它的方法表也是3,所以,一定是TForm1,而不是TForm. 这个在 system 中定义得很明白了 vmtSelfPtr = -76; vmtIntfTable = -72; vmtAutoTable = -68; vmtInitTable = -64; vmtTypeInfo = -60; vmtFieldTable = -56; vmtMethodTable = -52; vmtDynamicTable = -48; vmtClassName = -44; vmtInstanceSize = -40; vmtParent = -36; vmtSafeCallException = -32 deprecated; // don't use these constants. vmtAfterConstruction = -28 deprecated; // use VMTOFFSET in asm code instead vmtBeforeDestruction = -24 deprecated; vmtDispatch = -20 deprecated; vmtDefaultHandler = -16 deprecated; vmtNewInstance = -12 deprecated; vmtFreeInstance = -8 deprecated; vmtDestroy = -4 deprecated; vmtQueryInterface = 0 deprecated; vmtAddRef = 4 deprecated; vmtRelease = 8 deprecated; vmtCreateObject = 12 deprecated;Self 是每个对像都有的, TForm 是个类, TForm1 也是个类, 怎么可能 Self 指向是 TForm/TForm1 的??每个对像(class), 不管是任何类型, delphi简单类型除外, 负数的部分都是有内容的, 就像system定义, 哪怕你只申明一个类, 没有任何数据成员, 它的最小尺寸也是 40, deprecated 不在内Self 是指向当前对像数据域的开始地址(你的第一个数据成员), Self 的类型是个指针 奇怪的问题 如何设置才能实现将小图标放在ToolButton的左边?如何设置才能使ToolButton的宽,高随意定义? 求下列数的CRC16_standard和CRC16_ccitt值。 数据添加时,某字段内容添加不进 chart 的打印设置属性 一个消息处理的问题 来者有分! 怎样将4字节表示的浮点数转存到一个浮点数? 请问,谁有csdn论坛助手的源码? 给我发一分行吗? delphi 是否不再出WINDOWS 下的新版本??? quickreport报表循环连续打印问题? QuickReport如何控制打印机走纸?
而且,它的方法表也是3,所以,一定是TForm1,而不是TForm.
vmtSelfPtr = -76;
vmtIntfTable = -72;
vmtAutoTable = -68;
vmtInitTable = -64;
vmtTypeInfo = -60;
vmtFieldTable = -56;
vmtMethodTable = -52;
vmtDynamicTable = -48;
vmtClassName = -44;
vmtInstanceSize = -40;
vmtParent = -36;
vmtSafeCallException = -32 deprecated; // don't use these constants.
vmtAfterConstruction = -28 deprecated; // use VMTOFFSET in asm code instead
vmtBeforeDestruction = -24 deprecated;
vmtDispatch = -20 deprecated;
vmtDefaultHandler = -16 deprecated;
vmtNewInstance = -12 deprecated;
vmtFreeInstance = -8 deprecated;
vmtDestroy = -4 deprecated; vmtQueryInterface = 0 deprecated;
vmtAddRef = 4 deprecated;
vmtRelease = 8 deprecated;
vmtCreateObject = 12 deprecated;Self 是每个对像都有的, TForm 是个类, TForm1 也是个类, 怎么可能 Self 指向是 TForm/TForm1 的??每个对像(class), 不管是任何类型, delphi简单类型除外, 负数的部分都是有内容的, 就像system定义, 哪怕你只申明一个类, 没有任何数据成员, 它的最小尺寸也是 40, deprecated 不在内Self 是指向当前对像数据域的开始地址(你的第一个数据成员), Self 的类型是个指针