Hidden hat folgendes geschrieben: |
| Ich bin kein Experte aber ist eine File of TMyRecord nicht einfacher? |
Wenn er noch mehr speichern möchte, dann nicht.
Also...
Ein Record ist als ein Block im Speicher verfügbar. Das heißt, auch direkt untergeordnete Records sind in dieser Reihenfolge zu finden. Das ganze wird jedoch scheitern, wenn du nur Pointer auf die Unterobjekte in den Records gespeichert hast.
Das mal vorneweg. Jetzt zur Umsetzung:
Du gehst ganz einfach den Speicher vom Start des Recors
Länge Byte durch, wandelst sie in eine hexadezimale Zeichenfolge um und speicherst diese in der XML-Datei.
Ein bisschen Code...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| function BinaryToHexStr(Data: Pointer; Size: Integer) String;; var i: Integer; Start: Integer; P: PByte; B: Byte; begin Result := '';
Start := Integer(Data);
for i := 0 to Size-1 do begin P := PByte(Start + i);
B := P^;
Result := Result + IntToHex(B, 2); end; end; |
Vielleicht könnte man noch etwas optimieren, da kenne ich mich nicht so aus
Grüße,
Yogu