Hile! Jetzt auf einmal kaputt?



  • Hallo,
    Früher gingen funktionen wie

    RemoveDirectory("C:\\testordner");
    

    Aber sei ich neu aufgesetzt habe gibt es Fehler wie:

    error C2664: 'RemoveDirectoryW': Konvertierung des Parameters 1 von 'const char [4]' in 'LPCWSTR' nicht möglich
    1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.

    In anderen IDEs bzw Compilern geht es.
    Ich habe mein Visual C++ 2005 Express schon neu installiert und das PSDK habe ich schon! Sowie alle Updates + Service Pack 1.



  • Du benutzt die Unicode Version (RemoveDirectoryW). Versuch dieses:

    RemoveDirectory(L"C:\\testordner");
    


  • es geht, danke!
    früher ging aber auch meine version da 😕 Woran liegt es dass es nicht mehr geht?



  • Besser ist:

    #include <tchar.h>
    RemoveDirectory(_T("C:\\testordner"));
    


  • Warum wäre das besser?
    Sorry ich bin so neugierig 😃

    Aber warum ging früher "meine" Version und jetzt nicht mehr?



  • ich vermute mal das du vorher unicode nicht aktiviert hattest, jetzt aber schon

    ***(L"..") ist immer "WideChar" == Unicode == wchar_t == L"string"
    ***("..") ist immer "Char" == Multibyte == char == "string"
    ***(_T("..")) ist immer "Char||WideChar" == Multibyte||Unicode == char||wchar_t == _T("string")

    du kannst dir _T("") so vorstellen

    #ifdef UNICODE || _UNICODE
    #define _T("x") L"x"
    #else
    #define _T("x") "x"

    LPCWSTR == LongPointerConstWideSTRing == Unicode
    LPCSTR == LongPointerConstSTRing == Multibyte
    LPCTSTR == LongPointerConstTemplateSTRing == Unicode||Multibyte



  • Nochmals in deutsch:
    _T ist abhängig von den eigenstellten Compiler-Optionen; genauso wie fast alle Windows-Funktion abhängig von diesen Optionen ein char oder wchar_t entgegennehmen. Und damit beides immer passend zum define verwendet wird, sollte man immer die TCHAR-Dinge verwenden.


Anmelden zum Antworten