如果我有一个 TList,其中包含许多不同记录类型的指针,我如何访问 TList 中不同记录的值?
有没有什么办法可以获取那些引用的记录的记录类型或类型信息?
我目前正在使用 Delphi XE。
最佳答案
不同的记录类型需要一个共同的标题。然后,您可以首先将列表项指针转换为该 header 类型,以确定接下来要转换为哪种记录类型。例如:
type
TRecType = (recA, recB, recC);
PRecHeader = ^TRecHeader;
TRecHeader = record
RecType: TRecType;
...
end;
PRecordA = ^TRecordA;
TRecordA = record
Header: TRecHeader;
IntValue: Integer;
end;
PRecordB = ^TRecordB;
TRecordB = record
Header: TRecHeader;
StrValue: String;
end;
PRecordC = ^TRecordC;
TRecordC = record
Header: TRecHeader;
DblValue: Double;
end;
var
PRec: Pointer;
begin
PRec := List[Index];
case PRecHeader(PRec)^.RecType of
recA: use PRecordA(PRec)^.IntValue as needed ...
recB: use PRecordB(PRec)^.StrValue as needed ...
recC: use PRecordC(PRec)^.DblValue as needed ...
end;
end;
关于delphi - Delphi XE中如何通过指针获取记录的类型信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7825678/