Hallo PC-Programmierer, ich sitze gerade vor dem VS10 und mache ein Projekt mit den MFC´s. Jetzt habe ich in einem anderen Forum gelesen, dass ich einen CString so umwandeln kann: LPCSTR sending_data = (LPCSTR)(LPCTSTR)cstrCommand; Den LPCSTR sending_data schicke ich an eine Funktion, welchen den über die Serielle Schnittstelle ausgibt. Doch beim Debugging merke ich, dass aus einem Wort, bsp.: "Hallo" nur ein "H" übrig bleibt. Ich sehe im Debugging bei der Variable noch "Bad Ptr" Was hat das zu bedeuten? Ich hoffe jemand weiß mir Rat, danke schonmal! Dennis EDIT: Ich bin derzeit der Meinung es geht einfach nicht, ich hab jetzt schon X Möglichkeiten ausprobiert! Irgendwie muss es doch aber möglich sein oder? Ich hab einen x-beliebigen Text als CString und möchte den einfach über die Serielle Schnittstelle senden. Die verlangt nunmal einen LPCSTR...
Höchst wahrscheinlich hast du ein Unicode Projekt. Du musst erst mal den Unicode String auf einen normalen ASCII String zurückkonvertieren. Google ist dein Freund.
1 | /// UMWANDLUNG
|
2 | int count = cstrCommand.GetLength(); |
3 | char* c = new char[count + 1]; |
4 | for(int j = 0; j < count; j++) |
5 | {
|
6 | c[j] = static_cast<char> (* cstrCommand.Mid(j, 1)); |
7 | }
|
8 | c[count] = '\0'; |
9 | LPCSTR sending_data = LPCSTR(c); |
10 | //// UMWANDLUNG ENDE
|
Mit diesem Code ist es möglich einen UNICODE Strng zu einem normalen ASCII String zu formen! Hab den soeben im Internet gefunden! DANKE Karl Heinz!
Viel einfacher wäre es, auf die vermutlich unnötige Nutzung von 16-Bit-Unicode zu verzichten und stattdessen in den Projekteinstellungen "Multibyte" zu verwenden - da ist ein Zeichen 8 Bit groß ...
Oder CW2A bzw. W2A könnte man auch verwenden http://msdn.microsoft.com/en-us/library/87zae4a3(v=VS.100).aspx
Naja okay ihr habt mögt recht haben, dennoch habe ich mit der klasse cstring eine tolle klasse für strings, welche mir auch einige funktionen bietet auf die ich ungern in meinem programm verzichten möchte. Und die umwandlung dauert jetzta auch nicht so lange.
Dennis X. schrieb: > Naja okay ihr habt mögt recht haben, dennoch habe ich mit der klasse > cstring eine tolle klasse für strings, Was hat das eine mit dem anderen zu tun? CString funktioniert auch, wenn kein Unicode verwendet wird, und dann kannst Du Dir den Aufwand mit der "Umwandlung" sparen.
Hmm okay, das muss ich dann beim anlegen des projekts einstellen oder kann ich das nachträglich auch noch machen? Jedenfalls geht die funktion jetzt so. Ich schau nacher mal ob es da einstellmoglichkeiten gibt.
Dennis X. schrieb: > kann ich das nachträglich auch noch machen? Natürlich. Projekteigenschaften anzeigen lassen, "Configuration Properties"->General und dort unter "Character Set" anstelle von "Unicode" "Multi-Byte" eintragen. Einmal komplett übersetzen und fertig.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.