4
數組的元素類型我使用這個代碼來獲得一個數組我怎樣才能使用RTTI
{$APPTYPE CONSOLE}
uses
Rtti,
SysUtils;
type
TFooArray= array of TDateTime;
Var
T : TRttiType;
begin
try
T:=TRttiContext.Create.GetType(TypeInfo(TFooArray));
Writeln(TRttiArrayType(T).ElementType.Name);
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
的元素類型,但應用程序失敗,並訪問衝突在這條線
Writeln(TRttiArrayType(T).ElementType.Name);
如何使用RTTI獲取數組的元素類型?
而且,這也是值得一說的強制類型轉換' TRttiArrayType(T)'或'TRttiDynamicArrayType(T)'不是一個好習慣。只有當你確信類型匹配時才應該這樣做 - 在你的代碼中不是這種情況。 ('T as TRttiArrayType')可能是有意義的,或者首先測試'如果T是TRttiArrayType,那麼...'執行相同的操作(但不會觸發任何異常),但可以在循環之前創建一次。它將避免任何類似的類型混淆。 – 2011-12-31 10:11:51
同意Arnaud Bouchez,TSomeClass(VarSomeObj)僅適用於'如果VarSomeObj是TSomeClass,那麼使用TSomeClass(VarSomeObj)做某事' – OnTheFly 2011-12-31 12:38:39