Einzelnen Beitrag anzeigen

Eisenmann

Registriert seit: 24. Dez 2016
Ort: Saarland, 66663 Merzig
7 Beiträge
 
Delphi 10.4 Sydney
 
#1

einlesen eines String aus einem TFileStream

  Alt 2. Nov 2021, 13:45
Delphi-Version: 10.4 Sydney
Hallo Forenteilnehmer,

ich habe seit langer Zeit mein, in Delphi geschriebenes Programm, mal wieder hervor geholt und versuche es schon eine ganze Weile unter 10.4 Sydney zum laufen zu bringen. Beim Einlesen von selbst geschriebenen Dateien bekomme in bei Strings einen Fehler, den ich einfach nicht finde. Die Werte int64 werden richtig erkannt. Auch die abgespeicherten Zeichenlängen müssten richtig sein, da im Wechsel von Strings und int64 kein Fehler zu erkennen ist. Nur der Inhalt von den Strings wird nicht richtig zurück gegeben.


Das Speichern mache ich mit:
Code:
fS.WriteBuffer(laenge,sizeOf(l));
fS.WriteBuffer(PWideChar(daten)^,laenge);
wobei daten="Test312345Test1235.bge" und laenge = 22 ist.


gelesen wird es mit:
Code:
SetLength(skala.dateiname,d.l);
fS.ReadBuffer(PwideChar(skala.dateiname)^,d.l);
das Ergebnis in "Liste überwachter Ausdrücke" unter "Wert des Ausdruck kopieren" ist aber
:'Test312345Tspeichern'#0#0


Ich vermute, der Fehler ist bei der Umstellung auf Delphi 2009 passiert. Da gab es eine größere Änderung der Daten in Delphi.
Mein Programm hatte auch mit größere Dateien vorher funktioniert.
Jetzt bin ich in Rente und hätte mein Programm gerne unter dem neuen Delphi weiter gepflegt.

Ein mit der alter Version gespeicherter Wert ist z.B. '畋獮獴楴敬婟楥扴牥楥档ㅟ〰弰〰㔰弲㌲戮敧'#0#0#0#0#0#0#0#0#0#0#0#0#0#0 #0#0#0#0#0#0 statt Kunststile_Zeitbereich_1000_00052_23.bge
mit d.l also Zeichenlänge = 40.

Ich weiß, dass man hieraus keine Fehleranalyse machen kann.
Vielleicht kann mir aber jemand einen Tipp geben, wonach ich suchen soll.
Ich habe versucht mich durch die Datei "https://www.embarcadero.com/images/old/pdf/Delphi-Unicode181213.pdf" aber leider bisher ohne Erfolg.
Der Quellcode war früher immer mit PChar geschrieben. Änderungen mit PAnsiChar und PWideChar brauchten keine bemerkbaren Verbesserung.

Über einen Tipp würde ich mich sehr freuen.
  Mit Zitat antworten Zitat