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.