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 2

    Das 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 Effekt 😕

    Hat 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 eine 😉

    Ich dachte immer, dem Notepad etc. würde ein
    Steuerumbruchszeichen reichen.

    Gruß Stefan


Anmelden zum Antworten