error C2440: 'Typumwandlung': '__wchar_t __gc[]' kann nicht in 'char *' konvertiert werden
-
Hallo...
Mein Problem ist folgendes:
Ich habe eine Windows Form mit einer TextBox. Nun will ich TextBox->Text in eine Funktion übergeben, welche lediglich char akzeptiert.
error C2440: 'Typumwandlung': '__wchar_t __gc[]' kann nicht in 'char *' konvertiert werden
Ich verwende das Microsoft Visual C++ 2003 .NET
Ich habe auch schon gegoogelt, leider konnte ich keine Problembehebung, bzw. nur ungenaue Lösungswege finden:
http://www.c-plusplus.net/forum/viewtopic-var-p-is-285374.htmlDiese Funktion half mir nicht weiter, da es nur weitere Fehlermeldung hervor rief.
error C2065: 'use_facet': nichtdeklarierter Bezeichner
Nunja und ne Header stand ja in der Antwort nicht.
Danke schonmal im vorraus
(warum ist hier vor.raus wegge-x-t ?)
Daniel[EDIT]Liegt es evtl. am .NET?
-
Guck mal hier
MultiByteToWideChar(...)
bzw.
WideCharToMultiByte(...)
Tester2
-
See: Convert from System::String* to TCHAR*/CString
http://blog.kalmbachnet.de/?postid=18
-
Dankeschön, ich werde es gleich heute Abend wenn ich wieder zu Haus bin. Aber Danke für die (vor allem schnellen) Antworten ....
Super Forum
-
Bei Verwendung von Methode 1:
error C2664: 'WideCharToMultiByte': Konvertierung des Parameters 3 von 'System::String __gc *' in 'LPCWSTR' nicht möglich
Die zweite Methode werde ich gleich ausprobieren. Ich hatte gelesen, dass das __gc irgendwie .NET ansprechen soll und das dann .NET diese Variable selber verwaltet, etc.
Falls jemand Ahnung von dem Problem hat, wäre ich dankbar wenn er es posten würde
-
Hast Du meinen Link gelesen?
http://blog.kalmbachnet.de/?postid=18Also: Auch für gaaanz faule:
System::String *mstr = S"Hello world"; char *ustr; const char* umstring = (const char*)Marshal::StringToHGlobalAnsi(mstr).ToPointer(); ustr = new TCHAR[strlen(umstring)+1]; _tcscpy(ustr, umstring); Marshal::FreeHGlobal(IntPtr((void*)umstring)); // do something with the unmanaged string delete [] ustr;
oder
System::String *mstr = S"Hello world"; CString dest(mstr);
-
Ich hab da eine Gegenfrage:
Hast du meinen Post richtig gelesen?Die zweite Methode werde ich gleich ausprobieren.
Aaaaaber leider funktioniert deine Variante für "faule Leute".
Beim ersten Beispiel zickt er u.a. Marshal an:
error C2653: 'Marshal': Keine Klasse oder Namespace
error C2228: Der linke Teil von '.ToPointer' muss eine Klasse/Struktur/Union sein
Typ ist ''unknown-type''
error C3861: 'StringToHGlobalAnsi': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
error C2653: 'Marshal': Keine Klasse oder Namespace
error C3861: 'FreeHGlobal': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefundenDein zweites Beispiel funktioniert schon wegen der kleinen Sache namens CString nicht:
error C2065: 'CString': nichtdeklarierter Bezeichner
error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'dest'
error C3861: 'dest': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefundenEs wird doch wohl irgendwie möglich sein, einen Text aus einem Textfeld in einen Char umzuwandeln
-
Du könntest auch selber ein bisschen denken und ein
using namespace System::Runtime::InteropServices;
hinzufügen
-
Du könntest auch selber ein bisschen denken und ein
Ich könnte dir natürlich auch...
gaaaanz dick doll dafür danken, dass du dir die Arbeit gemacht hast und es gepostet hast. Somit haben auch unsere Nachfahren noch was davon
Nee, im ernst... Es klappt jetzt dank deiner HilfeDickes Dankeschön nochmal.