In der alten
RTTI?
Published-Felder sollten aber dennoch vorhanden sein. (published gibt es im Record nicht)
In der neuen "erweiterten
RTTI" sind die eigentlich vorhaden. (siehe der Anhang in
http://www.delphipraxis.net/180247-r...fahrungen.html)
[add]
Delphi-Quellcode:
type
TMyRecord = record
A: Byte;
B: Integer;
C: ShortString;
D: string[3];
E: string;
property F: Integer read B;
procedure G;
end;
Und über die
RTTI generiert:
Delphi-Quellcode:
TMyRecord = record {Package1.bpl Unit14.TMyRecord Managed Record Size=272 TRttiRecordType}
public
{ 0} A: Byte;
{ 4} B: Integer;
{ 8} C: ShortString;
{264} D: {unknown};
{268} E: string;
procedure G; {Addr=$26B37698}
end;
Warum gerade der eine ShortString mit Längenangabe nicht geht, müsste ich nochmal prüfen. (mir war so, als gingen die)
[add2]
OK, das Problem besteht erstmal nur bei eingebettenten Strings.
Delphi-Quellcode:
type
TMyStr = string[3];
TMyRecord = record
A: Byte;
B: Integer;
C: ShortString;
D: TMyStr;
E: string;
property F: Integer read B;
procedure G;
end;
Delphi-Quellcode:
TMyStr = string[3]; {Package1.bpl Unit14.TMyStr Size=4 TRttiStringType}
TMyRecord = record {Package1.bpl Unit14.TMyRecord Managed Record Size=272 TRttiRecordType}
public
{ 0} A: Byte;
{ 4} B: Integer;
{ 8} C: ShortString;
{264} D: TMyStr;
{268} E: string;
procedure G; {Addr=$23AC7684}
end;
Dabei fällt mir ein, daß es auch ein Problem mit Sets gab.
set of TEnum
geht, aber bei
set of (one, two, tree);
knallt es oftmals.