Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

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

Re: Problem mit TFileStream und Write Read

  Alt 8. Jul 2008, 18:53
Moin NickelM,

Zitat von NickelM:
Und was ist mit ShortStrings?? Ist das da anders???
Ja, diese sind immer 256 Byte gross (1 Byte Länge, Index 0, der Rest enthält den eigentlichen Wert).
Einen ShortString kann man direkt Speichern, auch einen Record der einen ShortString enthält, wobei der nicht genutzte Bereich des Strings (255-Length(ShortString)) mit den Daten gefüllt ist, die gerade zufällig im Speicher stehen. (wenn man Pech hat ein Anmeldename mit Passwort im Klartext ). Man sollte bei Speichern von ShortStrings, vor allem in Records, also etwas aufpassen.

Delphi-Quellcode:
// ShortString
fs.Write(s,Length(s)+1); // +1, da als erstes das Längenbyte steht, dann erst der String
fs.Write(s,SizeOf(s)); // Hier werden alle 256 Byte gespeichert
// Record mit ShortString
fs.Write(r,SizeOf(r)); // hier ist das Längenbyte bereits enthalten
@Christian:
durch das [1] wird die erste Stelle des eigentlichen Strings angegeben, damit dann ab dieser Stelle in den Stream geschrieben wird.
Man könnte auch [5] nehmen, wenn einen erst der String ab der 5. Stelle interessiert.
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