Forum: Sonstige Fragen zu Delphi
Delphi
by jbg,
7. Jan 2009
Also folgender Code funktioniert bei mir:
var
_codiert: AnsiString;
sfiledata: string; // = UnicodeString
fddschl: string;
sTmpFileName: string;
begin
sTmpFileName := 'C:\Testdata\Test.txt'; // *** anpassen ***
Forum: Sonstige Fragen zu Delphi
Delphi
by jbg,
7. Jan 2009
Kann es sein, dass du sämtliche String-Warnungen abgeschaltet hast? Denn der Compiler wirft überall, wo du eine implizite Konvertierung von UnicodeString nach AnsiString und andersherum machst, eine Warnung.
Forum: Sonstige Fragen zu Delphi
Delphi
by jbg,
7. Jan 2009
Also alles was du mit der Delphi 2009 Version geschrieben hast, ist verstümmelt. Da kann man nichts mehr machen, da die Hälfte der Daten fehlt.
Was du mit Delphi 1-2007 geschrieben hast, kannst du komplett über AnsiString abhandeln.
Für das Schreiben reicht es aus, wenn du _codiert als AnsiString deklarierst. Du solltest aber noch prüfen, ob die Daten, die aus dem StringStream zurück kommen...
Forum: Sonstige Fragen zu Delphi
Delphi
by jbg,
7. Jan 2009
Und da haben wir den Übeltäter.
EncodeString liefert einen (kodierten) AnsiString zurück. Mit der Zuweisung an _codiert, werden nun Zeichen größer #127 falsch umgesetzt. Und beim Schreiben in die Datei wird nur die Hälfte der Daten geschrieben: Length(_codiert) <> ByteLength(_codiert)
Forum: Sonstige Fragen zu Delphi
Delphi
by jbg,
7. Jan 2009
_codiert hast welchen Datentyp?
Forum: Sonstige Fragen zu Delphi
Delphi
by jbg,
7. Jan 2009
Entschlüssle den Text doch vor der Umwandlung in einen UnicodeString. Bei stmp := ansitmp werden nämlich Zeichen, die größer als 127 sind, in andere Code-Points gemappt, was natürlich zu einer Fehlinterpretation führt.
Also wenn ich " Memo1.Text := 'Hallo'#0'abc'; " in Delphi 2007 eingebe, dann steht da nur "Hallo" im Memo. Das ging also definitiv vorher auch nicht. Was aber ging, war...
Forum: Sonstige Fragen zu Delphi
Delphi
by jbg,
7. Jan 2009
Dann frage ich mal ganz dumm, was steht denn in der Datei (Hex-Edit) Wenn das zweite Zeichen ein #0 ist, dann ist klar, dass da nichts bei rauskommt.