Einzelnen Beitrag anzeigen

hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#1

RTTI im Record Feldlänge

  Alt 16. Sep 2013, 09:57
Hallo,

eine etwas kompliziertere Angelegenheit.

Ich möchte aus einem beliebigen Record Asciistrings auslesen und setzen.

Dazu deklariere ich einen Record z.B.
Delphi-Quellcode:
TMyRecord = record
  PLZ : string[6];
  Ort : String[50];
end;
Ich rufe meine Procedure auf mit

Showrec(ImpRec, TypeInfo(TMyRecord) ); ImpRec ist eine Instanz von TMyRecord.

Dann werte ich die Typinformationen aus:

Delphi-Quellcode:
Context := TRttiContext.Create();
  Inf := context.GetType( typeInf );
  LRecord := Inf.asRecord;
  f := LRecord.GetDeclaredFields;

for i := 0 to High(f) do
     Listbox1.items.Add(f[i].Name + ' : ' + inttostr(f[i].Offset) );
Beim Iterieren durch f bekomme ich Feldnamen und Offset.
Leider aber nicht in der Deklarierungsreihenfolge.

Wie komme ich jetzt an die Stringlänge heran?
Also PLZ = 6 und Ort = 50?

Für einen Tipp dankbar.


Gruß
Peter
  Mit Zitat antworten Zitat