![]() |
AW: einlesen eines String aus einem TFileStream
Aber gerade Beispiele, wie von Sequitar, haben das Potential für Probleme.
So lange der Code nur in einem Programm bleibt und die Streams niemals das Programm verlassen (speichern oder Datenübertragung), ist alles OK. Alles was das Programm verlässt, da muß für veränderliche Typen im Stream dessen Format/Version mit gespeichert werden, oder man arbeitet ausschließlich mit unveränderlichen Typen. veränderlich : String PChar Char unveränderlich : AnsiString PAnsiChar AnsiChar UnicodeString WideString PWideChar WideChar UTF8String usw. Ratet mal, warum im, bzw. seit dem Jahre 2009 so viele alte Codes nun nicht mehr richtig funktionieren. |
AW: einlesen eines String aus einem TFileStream
Hi,
ich hatte mich zu früh gefreut. Es gab dann doch Unsicherheiten beim speichern und lesen. Ich habe es jetzt mit Shortstring gemacht.
Code:
var daten:ShortString;
l:integer; l:=sizeof(daten); fs.WriteBuffer(l, sizeof(l)); // +1 fs.WriteBuffer(daten,sizeof(daten));
Code:
fs.Read(ZText,d.l); skala.Version2s:=ZText;
So geht es. Danke aber nochmals für die Hilfe. Grüße aus dem Saarland der Eisenmann. |
AW: einlesen eines String aus einem TFileStream
Wenn sowieso der ganze Shortstring geschrieben wird, der ja 255 Ansichars enthält, ist SizeOf überflüssig.
Besser wäre es aber Length zu verwendern und dann nur die Zeichen, die der Shortstring enthält mit dem Längenbyte zu schreiben. etwa so:
Delphi-Quellcode:
Aber wenn Daten immer 255 Zeichen enthält ist das Längenbyte überflüssig.
var
daten:ShortString; l: Byte; begin l := Length(daten); fs.WriteBuffer(l, sizeof(l)); if l > 0 then fs.WriteBuffer(daten[1], l); ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz