TCHAR nach Datei schreiben



  • Hallo!

    Ich versuche ein (zweidimensionales) TCHAR-Array in eine Datei zu schreiben, da kommt aber nur Müll bei raus. Wie geht das?



  • dateiname = L"main2.txt";
    datei = CreateFile(dateiname, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
    WriteFile(datei, unicodeheader, strlen(unicodeheader), &byteswritten, 0);
    
    TCHAR *str;
    
    for (i = 0; *(srcbuffer+i)!=0; i++)
    {
    str = *(srcbuffer + i);
    WriteFile(datei,str, lstrlen(str), &byteswritten, 0);
    WriteFile(datei, L'\n', 2, &byteswritten, 0);
    }
    
    CloseHandle(datei);
    


  • Ich habe es selbst hinbekommen.

    Falls irgendjemand mal ein ähnliches Problem haben sollte:
    1. der unicodeheader (0xFF,0xFE) muss mit 0 abgeschlossen werden wie alle Strings.
    2. WriteFile schreibt byteweise, das heißt: der Rückgabewert von lstrlen muss mit 2 multipliziert werden
    3. für den Zeilenumbruch muss "\r\n" verwendet werden.

    Am Ende sieht es dann so aus:

    dateiname = L"main2.txt";
    datei = CreateFile(dateiname, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
    WriteFile(datei, unicodeheader, strlen(unicodeheader), &byteswritten, 0);
    
    for (i = 0; *(srcbuffer+i)!=0; i++)
    {
    TCHAR *str = *(srcbuffer + i);
    WriteFile(datei,str, 2*lstrlen(str), &byteswritten, 0);
    WriteFile(datei, L"\r\n", 4, &byteswritten, 0);
    }
    
    CloseHandle(datei);
    


  • Tchar sind Projektabhängig. Benutz doch gleich wchar_t.


Anmelden zum Antworten