Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

Re: FileStream + Strings speichern

  Alt 20. Mär 2009, 15:23
data.awB zeigt nicht auf die Stringdaten, sondern einen internen Zeiger ...
wenn du den einfac so überschreibst, und so die innere Struktur zerstörst, dann dreht da auch schonmal was durch

data.awB[1] = Position des ersten Zeichens und damit der Anfang des enthaltenen Textes.


Delphi-Quellcode:
f.ReadBuffer(data.nr, sizeOf(data.nr));
f.ReadBuffer(i, SizeOf(Integer));
SetLength(data.kat, i);
f.ReadBuffer(data.kat[1], i);
f.ReadBuffer(i, SizeOf(Integer));
SetLength(data.frage, i);
f.ReadBuffer(data.frage[1], i);
...
Beim Speichern speicherst du ohne die [1] nur den Zeiger und irgendwas anderes und nicht den Text.

außerdem mußt du die länge des Strings vorm Reinladen des Textes setzen.

dabei mußt du aber aufpassen, daß ein String nie leer ist. (außer du machst eine Abfrage rein)
Delphi-Quellcode:
f.ReadBuffer(i, SizeOf(Integer));
SetLength(data.kat, i);
if i > 0 then f.ReadBuffer(data.kat[1], i);
(dieses ebenso beim Speichern)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat