【发布时间】:2013-08-11 01:59:29
【问题描述】:
我正在尝试将通用记录与 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 类型。
感谢您的帮助。
【问题讨论】:
-
编译器是否报错
-
是的,当然很抱歉,我应该在我的帖子中包含这个:[DCC 错误] GenericTypeInfo.dpr(24): E2134 Type 'TMyInt' has no type info
-
在泛型方面,RTTI 生成还没有 100% 完成。
-
“未 100% 完成”是否意味着没有可用的解决方法?
标签: delphi generics delphi-2010 rtti typeinfo