"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 的指针。