Fehler in sourcecode: cannot convert from char to LPWCH

Online-tutorials.net Forenübersicht/C++ / C#/Fehler in sourcecode: cannot convert from char to LPWCH

Antworten Neues Thema Bottom Seite 1 

Autor | Nachricht      nächster / vorheriger Thread

daemon777
Einsteiger

avatar

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:07Profil >> Zitat >> IP gespeichert 
Keywords:convert, char, LPWCH,Fehler

Simon
Online-tutorials.net Administrator

avatar

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:26Homepage >> icq status >>Profil >> Zitat >> IP gespeichert 
Keywords:Wide char, cannot convert parameter 2 from 'char [260]' to 'LPWCH'

daemon777
Einsteiger

avatar

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:12Profil >> Zitat >> IP gespeichert 

Simon
Online-tutorials.net Administrator

avatar

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:22Homepage >> icq status >>Profil >> Zitat >> IP gespeichert 
Keywords:widechar, convert, LPWCH

daemon777
Einsteiger

avatar

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:52Profil >> Zitat >> IP gespeichert 

Simon
Online-tutorials.net Administrator

avatar

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:22Homepage >> icq status >>Profil >> Zitat >> IP gespeichert 
Keywords:Widechar, Zeichensatz, C++

daemon777
Einsteiger

avatar

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:55Profil >> Zitat >> IP gespeichert 
Keywords:C++, widechar
                   nächster / vorheriger Thread

Antworten Neues Thema Top Seite 1