Forum: PC-Programmierung Konvertierung von 'char *' in 'System::String ^' nicht möglich


von M. G. (looking)


Lesenswert?

In VC++ 2005 bekomme ich diese Fehlermeldung bei AppendText:
Konvertierung von 'char *' in 'System::String ^' nicht möglich
1
char buf[40];
2
unsigned char leds_1_6;
3
unsigned char leds_7_14;
4
unsigned char leds_15_20;
5
6
7
sprintf(buf, "0x%02X,0x%02X,0x%02X\r\n", leds_1_6, leds_7_14, leds_15_20);
8
textBox1->AppendText(buf);

Da ich aus der C-Ecke komme, stehe ich grade etwas auf dem Schlauch.
Wie kann ich buf so konvertieren, dass es für AppendText passt?
Danke.

von Karl H. (kbuchegg)


Lesenswert?

Wenn ich mich auf meine spärlichen Ausflüge in dieses bescheuerte 
Managed C++ noch erinnere, dann kennzeichnet ^ eine managed Referenz auf 
ein anderes Objekt.
Das ist so was ähnliches wie ein Pointer, nur das sich das System per 
Garbage Collection um den Speicher kümmert.

Daher: Wenn die Funktion eine Referenz haben will, dann must du bereits 
ein String Objekte haben, damit du eine managed Referenz darauf bilden 
kannst. Du hast kein String Objekt. Du hast nur ein char Array.

von M. G. (looking)


Lesenswert?

Gibt es in VC++ eine andere einfache Möglichkeit ohne sprintf, um eine 
Variable hexadezimal in eine Textbox schreiben zu können?

von Arc N. (arc)


Lesenswert?

M. G. schrieb:
> Gibt es in VC++ eine andere einfache Möglichkeit ohne sprintf, um eine
> Variable hexadezimal in eine Textbox schreiben zu können?

Ja...
System.String.Format
1
    System::String^ s;
2
    s = System::String::Format("0x{0:X2}, 0x{1:X2}, 0x{2:X2}\r\n", gcnew array<System::Object^>  { leds_1_6, leds_7_14, leds_15_20 });
3
    // oder
4
    s = System::String::Format("0x{0:X2}, 0x{1:X2}, 0x{2:X2}\r\n", leds_1_6, leds_7_14, leds_15_20);
Syntax wird hier http://msdn.microsoft.com/en-us/library/txafckwd.aspx 
erklärt

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Schreib bitte nicht "VC++", wenn Du "Managed C++" bzw. "C++/CLI" meinst. 
Beides sind Perversionen für das .Net-Geraffel von Microsoft und haben 
mit C++ recht wenig zu tun. "VC++" aber ist ein Compiler, der neben 
diesen Perversionen auch richtiges C++ kennt, und mit den letzten 
Versionen sogar ziemlich vorzüglich wurde.

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
Noch kein Account? Hier anmelden.