Hile! Jetzt auf einmal kaputt?
-
Hallo,
Früher gingen funktionen wieRemoveDirectory("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.