gpt4 book ai didi

用于通用记录的 Delphi TypeInfo

转载 作者:行者123 更新时间:2023-12-03 15:42:08 25 4
gpt4 key购买 nike

我尝试将通用记录与 RTTI 结合使用,但遇到了类型信息问题。有谁知道为什么以下内容无法使用 Delphi 2010 进行编译?

program GenericTypeInfo;

{$APPTYPE CONSOLE}

uses
TypInfo,
SysUtils;

type

TMyRec<T> = record
public
Value: T;
end;

TMyInt = TMyRec<Integer>;
TMyString = TMyRec<String>;

begin

try
Writeln(GetTypeName(TypeInfo(TMyRec<Integer>))); <--- This works fine
Writeln(GetTypeName(TypeInfo(TMyRec<String>))); <--- so does this
Writeln(GetTypeName(TypeInfo(TMyInt))); <--- BUT this won't compile
Writeln(GetTypeName(TypeInfo(TMyString))); <--- nor this!!
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;

Readln;

end.

上面指出的行生成以下编译器错误:

[DCC Error] GenericTypeInfo.dpr(24): E2134 Type 'TMyInt' has no type info
[DCC Error] GenericTypeInfo.dpr(24): E2134 Type 'TMyString' has no type info

我不知道这两个之间有什么大区别?我承认我不是低级专家,但是为什么编译器会以不同的方式对待这个呢?我需要它适用于 TMyInt 和 TMyString 类型。

感谢您的帮助。

最佳答案

这是一个bug in Delphi 2010该问题已针对 XE 及更高版本修复。

但是有一个workaround .

关于用于通用记录的 Delphi TypeInfo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18141561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com