GetCurrentDirectory und UNICODE
-
hey

hier ist mein code:TCHAR szDllPath[MAX_PATH]; GetCurrentDirectory(MAX_PATH, szDllPath);passt der so oder muss ich sizeof(szDllPath) machen? Ich kenn mich noch nicht so aus mit unicode.
-
-
ich hab das schon nachgeschaut, aber ist verwirrend.
-
Es passt schon... alternativ kannst Du auch schreiben:
TCHAR szDllPath[MAX_PATH]; GetCurrentDirectory(siteof(szDllPath)/sizeof(TCHAR), szDllPath);Was aber IMHO unschöner ist...
-
Jochen Kalmbach schrieb:
TCHAR szDllPath[MAX_PATH]; GetCurrentDirectory(sizeof(szDllPath)/sizeof(TCHAR), szDllPath);Was aber IMHO unschöner ist...
schöner:
TCHAR szDllPath[MAX_PATH]; GetCurrentDirectory(_countof(szDllPath), szDllPath);und mit C++ lässt es sich noch weiter verschönern

-
Da geb ich Dir natürlich recht

-
unicodelover schrieb:
hier ist mein code:
TCHAR szDllPath[MAX_PATH]; GetCurrentDirectory(MAX_PATH, szDllPath);passt der so oder muss ich sizeof(szDllPath) machen?
sizeof() gibt die grösse in bytes zurück, GetCurrentDirectory will aber anzahl der TCHARs sehen (wird in dem fall zu GetCurrentDirectoryW). ausserdem muss platz für die 0 am ende sein. daher besser so:
TCHAR szDllPath[MAX_PATH+1]; GetCurrentDirectory(MAX_PATH, szDllPath);
-
Das würde ich so nicht sehen... in der Doku steht, dass in der Länge schon die NUL mit drin ist...
http://msdn.microsoft.com/en-us/library/aa364934.aspxThe buffer length must include room for a terminating null character.
-
^^ich finde die doku an der stelle nicht so ganz eindeutig, aber probier doch mal mit 'nem kleinen buffer aus, 3 zeichen oder so. vielleicht hast du ja recht.
