Problem mit TFileStream
-
Hallo
ich schreibe einen AnsiString in eine Datei z.B. "Zeile 1(Return)Zeile 2"
Das funktioniert mit folgendem Quellcode auch soweit:
Integer iAnz; AnsiString zText; TFileStream *FileStr; DWORD dwCount; Word wWert; HANDLE hFile; unsigned char *cData; zText="Zeile 1\rZeile 2"; //zText =StringReplace(zText,"\n","\r",TReplaceFlags() << rfReplaceAll); iAnz =zText.Length(); cData =new char[iAnz]; strcpy(cData,zText.c_str()); wWert =fmOpenWrite; if(FileExists(zFileCA)==false) { wWert=fmCreate; } FileStr=new TFileStream(zFileCA.c_str(),wWert); FileStr->Seek(0,soFromEnd); FileStr->Write(cData,iAnz); //FileStr->WriteBuffer(cData,iAnz); delete FileStr;
In der Datei zFileCA z.B. c:\test.txt zeigt der Notepad dann aber an:
Zeile1(ein kleines viereck)Zeile 2
statt korrekt
Zeile 1
Zeile 2Das gleiche Phänomen in Word. Schau ich mir aber die ASCII Zeichen
im einzelnen aber an, so hat das Sonderzeichen (kleine Viereck) korrekt
den ASCII-Wert 13 für Carrige Return (CR). Auch der Tausch gegen LineFeed
(Wert 10) hat den gleichen EffektHat jemand einen Tipp? Verstehe es im Moment nämlich überhaupt nicht mehr...
Danke und Gruß Stefan
-
Hallo,
der Standard-Zeilenumbruch bei den Windows-Programmen lautet ja auch "\r\n" (CR+LF)...
-
..ist man(n) manchmal dämlich...
Danke Th69
habe die Nacht zuviel gearbeitet.
Schlechte Ausrede, aber immerhin eineIch dachte immer, dem Notepad etc. würde ein
Steuerumbruchszeichen reichen.Gruß Stefan