System.pas文件包含有关硬编码VMT偏移的大量信息,但实际上似乎并未真正说明VMT本身的结构.我真正想知道的是,有没有办法在运行时找出VMT的大小,或者换句话说,给定类有多少虚拟方法?
TypeInfo(Type)返回有关指定类型的信息,有没有办法知道var的typeinfo?
var
S: string;
Instance: IObjectType;
Obj: TDBGrid;
Info: PTypeInfo;
begin
Info:= TypeInfo(S);
Info:= TypeInfo(Instance);
Info:= TypeInfo(Obj);
end
Run Code Online (Sandbox Code Playgroud)
此代码返回:
[DCC错误] Unit1.pas(354):E2133 TYPEINFO标准函数需要类型标识符
我知道非实例化的var只是一个指针地址.在编译时,编译器解析并执行类型安全检查.
在运行时,有没有办法知道更多关于var,只传递其地址?