Thema: Delphi RTTI-Bugs?

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

AW: RTTI-Bugs?

  Alt 5. Mai 2014, 09:27
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.
$2B or not $2B

Geändert von himitsu ( 5. Mai 2014 um 09:40 Uhr)
  Mit Zitat antworten Zitat