WriteFile Problem



  • Hallo zusammen,

    ich versuche im meinem Program (MASM32) ein String in ein Datei (C:\test.txt) zu schreiben. Da mir im masm32 keine Funktion fopen, fputs, fclose zu verfügung
    steht, hab ich WriteFile beschäftigt.

    Alles klappt auch ganz gut.

    Nun genügte mir im C++ einfach fputs("\n\r", stream) aufzurufen um in die neue Zeile zu gehen, mit masm geht es aber irgendwie nicht 😕

    so sieht der Code aus:

    .data
    CR_LF   db 10,13,0
    
    .code
    invoke WriteFile, hFile, addr CR_LF, 2, addr dwBytesWritten, 0
    

    Es ist auch so, das die Zeichen 10 und 13 werden zwar in die Datei geschrieben,
    es wird aber nicht in die neue Zeile gegangen 😕

    Und wenn ich die Datei mit Notepad öffne, dann sehe ich einfach zwei Leerzeichen, und dann wird die Zeile einfach fortgesetzt.

    Was mache ich hier Falsch????
    Danke!



  • Hi.

    Unter Windows wird eine neue Zeile in Textdateien durch die Kombination 13, 10 eingeleitet, und nur durch diese.
    Auf alles andere reagiert notepad alergisch. 🙄

    hth.



  • Nobuo T schrieb:

    Hi.

    Unter Windows wird eine neue Zeile in Textdateien durch die Kombination 13, 10 eingeleitet, und nur durch diese.
    Auf alles andere reagiert notepad alergisch. 🙄

    hth.

    aber komischerweise reagiert d. Notepad auf das 13,10 auch alergisch 😞

    Klar hab ich das auch probiert 😞
    Es ist also egal ob ich 10,13 oder 13,10 rein schreibe, es wird nicht in die neue Zeile gegangen, sie (die Zeile) wird fortgesetzt 😡

    Danke, aber das hilft mir leider nicht weiter 😞 😞 😞

    NEED HELP



  • Hallo Leute,

    hat sich erledigt 🙂 🙂 🙂
    Aber warum ist es so?????

    Also in meinem Program, sprich im DATA Segment ist eine Haufe von "Variablen" deklariert, darunter ist auch CR_LF db 13,10,0

    nun wenn ich CR_LF ganz unten deklariere, etwa so:

    .data
    hInstance		dd 0
    szClassName		db "blablabla",0
    hMutex			dd ?
    hLog			dd ?
    hDll			dd ?
    
    szBla-Bla  	   db MAX_PATH DUP(0)
    szBla-Bla2	   db MAX_PATH DUP(0)
    szBla-bla3	   db MAX_PATH DUP(0)
    szbla-bla4	   db MAX_PATH DUP(0)
    
    noch
    viele
    viele
    Variablen
    CR_LF               db 13,10,0    ;<<<<<<<<<<<<<<<<<<<<    FAST/GANZ UNTEN
    
    .code               ; << Code Segment
    
    weiter
    

    Dann funktioniert es NICHT, also es werden zwei Leerzeichen in Datei geschrieben, und es wird nicht in die neue Zeile gegangen 🙄

    Aber wenn ich die CR_LF ganz oben/ in die Mitte deklariere, erst dann funktioniert es. Also erst dann wird wirklich in die neue Zeile gegangen 😮

    etwa so:

    .data
    
    CR_LF   db 13,10,0
    noch
    viele
    viele
    Variablen
    
    .code           ; <<   Code Segment
    

    Kann mir hier einer sagen warum es so ist???????????

    Danke!



  • Dann wirst du es dir wohl irgendwo überschreiben. Schau mal im Debugger nach, ob CR_LF zum Zeitpunkt des WriteFile noch 13,10 enthält. Vermutlich nicht!


Anmelden zum Antworten