Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: bei string in TFileStream kommt 1 Zeichen zu wenig an...

  Alt 22. Mär 2010, 22:01
Moin Peter,

das Problem ist, dass Du in Deinem Record ShortStrings verwendest.
Diese beginnen, an Index 0, mit der Länge.
Da Du nicht angibst, ab welchem Index der String gelesen/geschrieben werden soll, wird immer ab Index 0 in die Datei geschrieben, bzw. daraus gelesen.

Da Du ja die Länge immer mitspeicherst, solltest Du "normale" Strings verwenden (Huge Strings):


Beispiel:

Delphi-Quellcode:
    // Schreiben
    y:=Length(AllTitel[x].Titel);
    f.WriteBuffer(y,SizeOf(integer));
    f.WriteBuffer(AllTitel[x].Titel[1],y);

    // Lesen
    f.ReadBuffer(y,SizeOf(integer));
    SetLength(AllTitel[x].Titel,y);
    f.ReadBuffer(AllTitel[x].Titel[1],y);
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat