Autor
|
|
Nachricht nächster / vorheriger Thread
|
daemon777 Einsteiger
Registriert seit: 03.2006 Beiträge:6
| Fehler in sourcecode: cannot convert from char to LPWCH Hi erstmal,
Ich bin neu in diesem Forum und habe mir gleich mal die Tutorials und Sourcecodes angeguggt. Allerdings habe ich bei manchen Fehlermeldungen.
zB beim Sourcecode "Pfad deines Programmes ermitteln" unter Daten & Ordner.
Code:
char str[MAX_PATH];
DWORD dWord;
GetModuleFileName(NULL,str,dWord);
cout<<str;
Da bekomme ich folgenden Fehler:
'GetModuleFileNameW' : cannot convert parameter 2 from 'char [260]' to 'LPWCH'
und der compiler beschwert sich auch noch weil dWord nicht initialisiert wurde.
Wenn ich das ganze mit
Code:
dWord=0;
GetModuleFileName(NULL,(LPWCH)str,dWord);
mache kommt nur der erste Buchstabe des Pfades bei raus.
Hoffe auf Hilfe, denn die Tutorials und Sources sind spitze. Das ist doch endlich mal ne Seite die einen weiterbringt.
Vielen Dank schon mal.
|
17.03.2006 17:07 | Profil >> Zitat >> IP gespeichert |
Keywords:convert, char, LPWCH,Fehler |
---|
Simon Online-tutorials.net Administrator
Registriert seit: 01.1970 Wohnort:Dornbirn Beiträge:1181
| C++, wide char Hallo,
freut mich das dir die Seite zusagt.
Die Funktion GetModuleFileName sieht folgendermaßen aus:
Code:
DWORD GetModuleFileName(
HMODULE hModule,
LPTSTR lpFilename,
DWORD nSize
);
Das heißt als 2. Parameter bekommen wir einen WideChar String. WideChars sind Zeichen die typischerweise nicht nur 8, sondern 16 Bit haben. Damit unterstützen sie auch internationale Zeichen.
Das 3. Argument ist die Größe des Widechar-Stringarrays das beschrieben wird.
Wenn du ein Array mit der Größe MAX_PATH angiebst solltest du im 3. Parameter MAX_PATH angeben, damit die Funktion nicht darüber hinaus schreibt.
Code:
//Afaik nichts anderes als wchar
TCHAR szPath[MAX_PATH];
GetModuleFileName(NULL, szPath, MAX_PATH);
Da hat der, der das geschrieben hat ein wenig gepfuscht, ich werde das ändern.
Ich hoffe ich kann dir damit helfen.
[edit]
Hier der Quellcode. Dieser Beitrag wurde zuletzt am 17.03.2006 21:30 von Simon editiert. -------------------
http://www.online-tutorials.net/wiki/funktionsname
Für was Personal Firewalls GnuGP emails verschlüsseln C++ Tutorial Sicherheits Tutorials
|
17.03.2006 21:26 | Homepage >> >>Profil >> Zitat >> IP gespeichert |
Keywords:Wide char, cannot convert parameter 2 from 'char [260]' to 'LPWCH' |
---|
daemon777 Einsteiger
Registriert seit: 03.2006 Beiträge:6
| Hm danke erstmal für deine schnelle Antwort. Nur funktioniert das leider noch nicht so wie ich es erhofft habe :)
Und zwar bekomme ich als Antwort nicht den Pfad sondern eine Hexadezimalzahl. Allerdings scheint die auch nicht den Pfad auszudrücken da die Zahl immer gleich ist egal wo auf meinem PC die Datei liegt.
Kann es sein, dass hier mit Pfad vielleicht der Speicherbereich gemeint ist ?
Und damit ich nicht gleich noch einen thread aufmachen muss hier gleich mein nächstes aber ähnliches Problem zum Beispiel zum Schreiben in die Registry:
Code:
HKEY hkey;
HKEY KEY = HKEY_LOCAL_MACHINE;
char place[100]={"Software\\Microsoft\\Windows\\CurrentVersion\\Run"};
char name[100]= {"Autostart"};
char value[100]= {"C:\\programm.exe"};
RegOpenKeyEx(KEY,place,0, KEY_ALL_ACCESS,&hkey);
RegSetValueEx(hkey, name, 0, REG_SZ, (BYTE *)value, strlen(value));
RegCloseKey(hkey);
ergibt ber mir den Fehler: 'RegOpenKeyExW' : cannot convert parameter 2 from 'char [100]' to 'LPCWSTR'
Wenn ich es mit
Code:
RegOpenKeyEx(KEY,(LPCWSTR)place,0, KEY_ALL_ACCESS,&hkey);
mache geht es leider wieder nicht :(
Ich hoffe mal dass es auch darauf eine relativ einfache Antwort gibt :)
|
18.03.2006 18:12 | Profil >> Zitat >> IP gespeichert |
Simon Online-tutorials.net Administrator
Registriert seit: 01.1970 Wohnort:Dornbirn Beiträge:1181
| widechar Das ist wieder das gleiche Problem, der Autor versucht einen char anstelle von einem widechar zu verwenden.
Probier mal ob das Beispiel hier läuft: www.online-tutorials.net/daten-ordner/pfad-deines-programms-ermitte...
Ich habe jemand mit Windows darum gebeten es zu kompilieren, bei ihm funktioniert es. ------------------- http://www.online-tutorials.net/wiki/funktionsname
Für was Personal Firewalls GnuGP emails verschlüsseln C++ Tutorial Sicherheits Tutorials
Firefox - besser durch das Web!
|
18.03.2006 20:22 | Homepage >> >>Profil >> Zitat >> IP gespeichert |
Keywords:widechar, convert, LPWCH |
---|
daemon777 Einsteiger
Registriert seit: 03.2006 Beiträge:6
| Hm mit dem VC++ 6.0 Autoren Edition klappt es bei mir jetzt auch. Allerdings nicht mit dem VC++ 2005 Express Edition nicht. Da kommt wie gesagt eine Hexadezimalzahl bei raus.
Gibt es vielleicht einen kostenlosen Compiler bei dem es ohne Probleme funktioniert ( am besten einen von der VC++ Reihe) bei dem es kein Popup am Anfang eines jeden Programmes gibt mit der Meldung dass es nur die Autoren Edition ist ? ( Ich weiß das ist jetzt ein wenig Offtopic :) )
|
19.03.2006 19:52 | Profil >> Zitat >> IP gespeichert |
Simon Online-tutorials.net Administrator
Registriert seit: 01.1970 Wohnort:Dornbirn Beiträge:1181
| Widechar VC++ 2005 Express hat das charset auf UTF8 eingestellt, stell den Zeichensatz einfach auf ISO und dann sollte es klappen.
Übrigens für alle die es interessiert:
www.c-plusplus.de/forum/viewtopic-var-t-is-39492.html ------------------- http://www.online-tutorials.net/wiki/funktionsname
Für was Personal Firewalls GnuGP emails verschlüsseln C++ Tutorial Sicherheits Tutorials
Firefox - besser durch das Web!
|
19.03.2006 20:22 | Homepage >> >>Profil >> Zitat >> IP gespeichert |
Keywords:Widechar, Zeichensatz, C++ |
---|
daemon777 Einsteiger
Registriert seit: 03.2006 Beiträge:6
| C++, widechar Danke für den Link. Damit klappts jetzt.
Der Rest vom Post wurde verschoben. Dieser Beitrag wurde zuletzt am 20.03.2006 16:44 von Simon editiert.
|
20.03.2006 12:55 | Profil >> Zitat >> IP gespeichert |
Keywords:C++, widechar |
|
nächster / vorheriger Thread
|