Moin!
monty.ms hat folgendes geschrieben: |
Das Problem ist, dass wenn ich lade, die Variable E1 nicht den String "Test" enthält sondern leer ist. Weis einer was ich falsch gemacht habe? Warum die Variable nicht mit abgespeichert wird? |
Es werden nur
published-Eigenschaften gesichert, deshalb landen deine Eigenschaften gar nicht erst im Stream!

Weiterhin erstellst du Objekt, ohne sie wieder freizugeben

Und obendrein brauchst du den
TMemoryStreamgar nicht, wenn du in eine Datei speichern willst, kannst du auch gleich einen
TFileStreamnehmen:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45:
| type TTest = class(TComponent) private FE1: String; published property E1: String read FE1 write FE1; end;
procedure TForm1.Button1Click(Sender: TObject); var MeinStream: TFileStream; MeinObjekt: TTest; begin MeinObjekt := TTest.Create(NIL); try MeinObjekt.E1 := 'Test'; MeinStream := TFileStream.Create('F:\test.dat',fmCreate); try MeinStream.WriteComponent(MeinObjekt); finally MeinStream.Free; end; finally MeinObjekt.Free; end; end;
procedure TForm1.Button2Click(Sender: TObject); var MeinStream: TFileStream; MeinObjekt: TTest; begin MeinObjekt := TTest.Create(NIL); try MeinStream := TFileStream.Create('F:\test.dat',fmOpenRead or fmShareDenyWrite); try MeinStream.ReadComponent(MeinObjekt); finally MeinStream.Free; end; ShowMessage(MeinObjekt.E1); finally MeinObjekt.Free; end; end; |
cu
Narses
There are 10 types of people - those who understand binary and those who don´t.