char[] nach LPCWSTR *verzweifel*
-
Elektronix schrieb:
in C++: reinterpreteCast.
Ic C:name2 = ((LPCWSTR) name)oder so ähnlich.
@Elektronix: Und was erwartest Du denn nach der Anweisung?
Ich schätze mal, dieser Code ergibt nicht das gewünschte Verhalten.
-
Hab das mal ausprobiert mit TCHAR...
sieht dann wie folgt aus:TCHAR name[] = TEXT(op2);ist dann folgendes:
'Lop2': nichtdeklarierter Bezeichner
Was zur Höll ist Lop2, ihc hab das nie deklariert oder dergleichen..
kommentiere ich die Zeile aus, komm tder fehler nicht...achja op2 ist:
char op2[256]Und wie nun weiter?
-
Zu:
LPCWSTR str = ((LPCWSTR)name);Der Compiler meckert nicht mehr, aber es funktioniert nicht, wenn ich str
in ShellExecute verwende (er macht gar nichts).
-
Quellcode schrieb:
Zu:
LPCWSTR str = ((LPCWSTR)name);Der Compiler meckert nicht mehr, aber es funktioniert nicht, wenn ich str
in ShellExecute verwende (er macht gar nichts).Siehe mein letzter Post.
-
und was mach ich nun?
Ich will das unbedingt umwandeln...
-
In der FAQ gibts ein Thread (der Code befindet sich ziemlich unten:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-161855.html
-
Die Funktion ShellExecute erwartet unter Multibyte ein LPCTSTR unter Unicode aber einen LPCWSTR. Wenn du einen pfad zu einer Datei hast dann schreibst du den ja in einer variable, also einen char arry.
Wenn deine IDE bei ShellExecute einen LPCWSTR haben will, dann steht dein projekt auf Unicode weil ShellExecute an ShellExecuteW weiterleitet .. so ausgedrückt.
Entweder packst du die Daten in TCHARs anstatt chars oder du stellt dein projekt auf Multibyte. Mit Multibyte leitet deine IDE an ShellExecuteA weiter die deinen char (LPCTSTR ) schluckt.
Unicode:
TCHAR sDateipfad[] = TEXT("c:\\meineanwendung.exe");
ShellExecute( ..., sDateipfad, ...); // Leitet an ShellExecuteW weiterMultibyte:
char sDateipfad[] = "c:\\meineanwendung.exe"; // oder _T("") oder doch mit TEXT("") .. ka
-
Ich hab mein Problem gelöst....
Anstelle von ShellExecute hab ich einfach ShellExecuteA genommen und mein
char *pathname ="blablabla" auf LPCSTR path gelegt.SO geht jetzt alles...
Mensch, der schöne Tag is schon halb rum...
scheiss ehrgeizEDIT: grad mitbekommen, dass es auch ohne LPCSTR path geht...
Danke allen, dir ihre zeit geopfert haben, mir bei meinem Problem zu helfen.
-
scheiss ehrgeiz
Naja, soviel ehrgeiz ist da nicht drin, denn es gibt schon schwierigkeiten bei der Unicode Variante.
-
Quellcode schrieb:
Hab das mal ausprobiert mit TCHAR...
sieht dann wie folgt aus:TCHAR name[] = TEXT(op2);ist dann folgendes:
'Lop2': nichtdeklarierter Bezeichner
Was zur Höll ist Lop2, ihc hab das nie deklariert oder dergleichen..
kommentiere ich die Zeile aus, komm tder fehler nicht...achja op2 ist:
char op2[256]Und wie nun weiter?
TEXT is einfach nur ein Makro:
#define __TEXT(quote) L##quoteD.h. es setzt einfach ein L vor die "".. Und wenn du nun op2 übergibst ensteht natürlich Lop2. Das Makro is auch nur für String-Literale gedacht, nich für Variablen
-
achso...
naja muss man halt erstmal wissen