wulfgang Geschrieben 11. Februar 2009 Teilen Geschrieben 11. Februar 2009 Hallo, ich möchte einen string in LPCTSTR konvertieren.Brauche es für den unten stehenden Code. SetCurrentDirectory will ja LPCTSTR. Gibt es da eine einfache Möglichkeit? string unterordner; unterordner = s[1] + s[2] + s[3]; if(connection_pointer->SetCurrentDirectory(unterordner)) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 11. Februar 2009 Teilen Geschrieben 11. Februar 2009 LPCTSTR ist je nach Projekteinstellungen, const char* oder const wchar_t*. Im ersten Fall kannst du einfach unterordner.c_str() benutzen, im zweiten Fall musst du den String umwandeln (MultiByteToWideChar) oder wstring benutzen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
wulfgang Geschrieben 12. Februar 2009 Autor Teilen Geschrieben 12. Februar 2009 Moin, also bei cout << "Wechsel in das Verzeichnis erfolgreich\n"; string s_unterordner; s_unterordner = s[1] + s[2] + s[3]; cout << s_unterordner.length(); //MultiByteToWideChar(CP_THREAD_ACP, MB_COMPOSITE, s_unterordner, ... ); LPCTSTR unterordner; unterordner = s_unterordner.c_str(); if(connection_pointer->SetCurrentDirectory(unterordner)) erhalte ich error C2440: '=' : cannot convert from 'const char *' to 'LPCTSTR' Dann benötige ich wohl const wchar_t*? Aber MultiByteToWideChar wandelt doch in LPWSTR um? SétCurrentDirectory benötigt doch LPCTSTR? Oder meintest du dass ich mit MultiByteToWideChar erst in LPWSTR und dann mit c_str() in LPCTSTR umwandel?:confused: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 12. Februar 2009 Teilen Geschrieben 12. Februar 2009 Dann benötige ich wohl const wchar_t*?Mit deinen aktuellen Projekteinstellungen, ja. Ich sagte es doch schon: Welcher Typ sich hinter TCHAR/LPTSTR/LPCTSTR verbirgt, hängt von deinen Projekteinstellungen ab. Aber MultiByteToWideChar wandelt doch in LPWSTR um? SétCurrentDirectory benötigt doch LPCTSTR?Es gibt eigentlich gar keine Methode SetCurrentDirectory. Es gibt SetCurrentDirectoryA und SetCurrentDirectoryW. SetCurrentDirectory ist nur ein Präprozessorsymbol, das entweder auf die eine oder auf die andere Variante verweist. Und das ist von denselben Projekteinstellungen abhängig, die regeln, was TCHAR ist. Das gilt übrigens für fast alle WinAPI- und MFC-Funktionen, die mit Strings arbeiten. Wenn man durchgängig die T-Varianten benutzt, kann man die Projekteinstellungen zwischen Multibyte und Unicode umschalten, und es lässt sich trotzdem noch immer alles kompilieren. Wenn du das nicht brauchst, solltest du dich vielleicht auf eines von beiden festlegen. Brauchst du Unicode? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
wulfgang Geschrieben 12. Februar 2009 Autor Teilen Geschrieben 12. Februar 2009 Brauchst du Unicode? Nei eigentlich nicht. Ist es einfacher für mich, wenn ich ANSI benutze? Wo kann ich denn die Projekteinstellungen auf ANSI umstellen? Bin jetzt im PropertyManager->Configuration Properties und dann einfach überall wo Unicode YES vorkommt auf Unicode NO ändern? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 12. Februar 2009 Teilen Geschrieben 12. Februar 2009 Ist es einfacher für mich, wenn ich ANSI benutze?Vermutlich. Wo kann ich denn die Projekteinstellungen auf ANSI umstellen? Bin jetzt im PropertyManager->Configuration Properties und dann einfach überall wo Unicode YES vorkommt auf Unicode NO ändern?Unter General > Character Set auf "Use Multi-Byte Character Set" stellen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
wulfgang Geschrieben 12. Februar 2009 Autor Teilen Geschrieben 12. Februar 2009 Habe jetzt auf ANSI umgestellt.Funktioniert!:uli Musste erst mal alle wchar_t umstellen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TDM Geschrieben 12. Februar 2009 Teilen Geschrieben 12. Februar 2009 LPCTSTR ist je nach Projekteinstellungen, const char* oder const wchar_t*. Im ersten Fall kannst du einfach unterordner.c_str() benutzen, im zweiten Fall musst du den String umwandeln (MultiByteToWideChar) oder wstring benutzen. hmm, für sowas gibts doch Makros - zumindest bei ATL/MFC. CT2CA string str(CT2CA(_T("..."))); :beagolisc Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.