ShellExecute und cast
-
AnsiString::w_str()gibt es zum Glück nicht.Um einen gewöhnlichen (UTF-16-)String aus einem
AnsiStringzu bekommen, macheString(str_projekt). Den zugehörigen C-String bekommst du dann mitString(str_projekt).c_str(), und den kannst du auch anShellExecute()übergeben. An der Stelle solltest du dich dann aber auch fragen, warumstr_projektüberhaupt vom TypAnsiStringund nichtStringist.
-
Ich verwende meist AnsiString da ich der Meinung bin, dass String und AnsiString synonyme sind.
-
und wenn du es so machst?
ShellExecuteA(0, "open", "person.exe", str_projekt.c_str(), 0, SW_SHOWNORMAL);
-
Robbiani schrieb:
da ich der Meinung bin, dass String und AnsiString synonyme sind.
Da irrst du.
StringundUnicodeStringsind synonym.AnsiStringkann nicht alle Unicode-Zeichen darstellen und deshalb zu Datenverlust führen.
-
Herzlichen Dank für eure Hilfe.
Genau mit ShellExecuteA läuft es.
Was mich wundert sind die verschiedenen Möglichkeiten wo es gibt.
-
audacia|off schrieb:
Da irrst du.
StringundUnicodeStringsind synonym.AnsiStringkann nicht alle Unicode-Zeichen darstellen und deshalb zu Datenverlust führen.Das hängt aber von der verwendeten Version des Builders ab.
-
Braunstein schrieb:
audacia|off schrieb:
Da irrst du.
StringundUnicodeStringsind synonym.AnsiStringkann nicht alle Unicode-Zeichen darstellen und deshalb zu Datenverlust führen.Das hängt aber von der verwendeten Version des Builders ab.
Ich habe jetzt mal unterstellt, daß Robbiani nach wie vor C++Builder XE7 benutzt.
-
Damit hast du sicher recht. Manchmal schaue ich zu sehr durch meine BCB2007 Brille.

-
ShellExecute(0, L"open", L"person.exe", str_projekt.c_str(), 0, SW_SHOWNORMAL);
Würde wohl wahrscheinlich mit der Widestring Funktion "ShellExecuteW" funktionieren.
-
Wenn str_projekt.c_str()ein const char* zurückgibt eben nicht.