Ich migriere meine Anwendung von Delphi 2007 nach Delphi xe, aber ich habe Probleme mit einer Prozedur, die eine Datei liest (ascii) und den Inhalt in einer Zeichenfolge speichert
das ist der Code, der in Delphi 2007 funktioniert
%Vor%aber wenn dieser Code in Delphi XE ausgeführt wird, sind die Ergebnisse nur Symbole wie '????????', ich weiß, welches Delphi xe Unicode ist, also ändere ich diese Zeilen
%Vor%bis
%Vor%speichert den Inhalt der Datei in der Unicode-Zeichenfolge, aber das Ergebnis ist das gleiche.
how i can fix this procedure to read the content of this file?
Sie Code funktioniert nicht, weil Sie den Inhalt der Datei mit einem Unicode-String als Puffer lesen, so dass Sie nur Bytes aus dem internen Puffer des TFileStream in die Unicode-Zeichenfolge verschieben, die Codierung zu ignorieren.
Sie können Ihre Prozedur leicht korrigieren, indem Sie nur den Ergebnistyp in AnsiString
Aber ich werde Ihnen empfehlen, dass Sie stattdessen die Funktion TFile.ReadAllText
verwenden, die in einem Eine einzelne Codezeile liest den Inhalt einer Datei und behandelt auch die Kodierung der Datei.
Ich empfehle, eine TStringList zu verwenden, um den Inhalt der Datei zu laden und dann das Ergebnis auf variable.Text zu setzen, zum Beispiel:
%Vor%Auf diese Weise müssen Sie sich um nichts kümmern, es wird rückwärts und zukünftig kompatibel sein.
BEARBEITEN: Wenn Sie von einem Nachkommen von TStream laden müssen, ersetzen Sie LoadFromFile durch LoadFromStream.
Tags und Links delphi delphi-xe delphi-2007