"TypeIdentifier"的定义在哪里
Where is the definition of "TypeIdentifier"
我需要编写一个函数,以 RTTI 模式对数据执行操作,而我并不知道其类型。
我试着写一个这样的函数:
function doSomething (T: TypeIdentifier): Boolean;
当使用表达式 TypeInfo(T)
时,他期望作为类型参数 TypeIdentifier
但是当我尝试编译时出现错误,因为无法识别类型 TypeIdentifier。
有人可以向我解释如何发送我只在运行时知道其类型的数据类型吗?
感谢可用性。
恩佐
TypeInfo
is an intrinsic 使用编译器魔法的函数。那是编译器生成实现函数的代码,而不是它是运行时库的一部分。
你无法使用这种魔法。您不能创建接受 TypeInfo
方式的类型标识符的函数。所以你需要让你的函数接受 TypeInfo
returns,一个指向类型信息的指针,PTypeInfo
。
您可以这样调用您的函数:
DoSomething(TypeInfo(SomeTypeIdentifier));
从技术上讲,您可能会注意到 TypeInfo
returns 类型为 Pointer
的值。那是因为PTypeInfo
定义在另一个单元中,TypInfo
和定义所有内在函数的System
单元不允许使用TypInfo
。但正如上面链接的文档中所述,TypeInfo
returns 指向 TTypeInfo
的指针。
我需要编写一个函数,以 RTTI 模式对数据执行操作,而我并不知道其类型。
我试着写一个这样的函数:
function doSomething (T: TypeIdentifier): Boolean;
当使用表达式 TypeInfo(T)
时,他期望作为类型参数 TypeIdentifier
但是当我尝试编译时出现错误,因为无法识别类型 TypeIdentifier。
有人可以向我解释如何发送我只在运行时知道其类型的数据类型吗?
感谢可用性。
恩佐
TypeInfo
is an intrinsic 使用编译器魔法的函数。那是编译器生成实现函数的代码,而不是它是运行时库的一部分。
你无法使用这种魔法。您不能创建接受 TypeInfo
方式的类型标识符的函数。所以你需要让你的函数接受 TypeInfo
returns,一个指向类型信息的指针,PTypeInfo
。
您可以这样调用您的函数:
DoSomething(TypeInfo(SomeTypeIdentifier));
从技术上讲,您可能会注意到 TypeInfo
returns 类型为 Pointer
的值。那是因为PTypeInfo
定义在另一个单元中,TypInfo
和定义所有内在函数的System
单元不允许使用TypInfo
。但正如上面链接的文档中所述,TypeInfo
returns 指向 TTypeInfo
的指针。