www.mikrocontroller.net

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


Autor: M. G. (looking)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In VC++ 2005 bekomme ich diese Fehlermeldung bei AppendText:
Konvertierung von 'char *' in 'System::String ^' nicht möglich
char buf[40];
unsigned char leds_1_6;
unsigned char leds_7_14;
unsigned char leds_15_20;


sprintf(buf, "0x%02X,0x%02X,0x%02X\r\n", leds_1_6, leds_7_14, leds_15_20);
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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: M. G. (looking)
Datum:

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

Autor: Arc Net (arc)
Datum:

Bewertung
0 lesenswert
nicht 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
    System::String^ s;
    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 });
    // oder
    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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.