Konvertierung von 'char *' in 'System::String ^' nicht möglich

OP #1972281
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.
#1972295
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.
#1972985
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren