Problem beim hinzufügen eines Elements in einer ComboBox



  • Hallo zusammen,

    seit einiger Zeit beschägtige ich mich intensiv mit C++. Derzeit schreib ich ein kleines Programm in dem es unvermeidbar ist ComboBoxen zu nutzen. Hierbei tat sich bei mir nun folgendes Problem auf:

    Ich hab eine Methode geschrieben, die einen String aus einer Datenstruktur ausliest und als Auswahlitem der ComboBox hinzugefügt wird. Compilier ich das ganze allerdings so erscheint bei mir der Compilerfehler C2664.

    ComBox1->Items->Add(tmpString);

    Diesen Befehl hab ich verwendet und verzweifel gerade daran, dass ich anscheinend einen normalen String nicht in eine ComBox einfügen kann...

    Um Hilfe würde ich bitten.

    Gruß Matthias



  • MattiH schrieb:

    Compilier ich das ganze allerdings so erscheint bei mir der Compilerfehler C2664.

    Nachdem du also jeden, der dir helfen will, gezwungen hast, in der MSDN Library nachzusehen, wie die zugehörige Meldung lautet, obwohl du sie ganz einfach hättest hinschreiben können, haben wir nun also:

    'function' : cannot convert parameter number from 'type1' to 'type2'

    Schade eigentlich. Die konkreten Angaben für type1 und type2 wären hier hilfreich gewesen.

    Komm, gib dir einen Ruck und poste die vollständige Fehlermeldung. Tut gar nicht weh.



  • MattiH schrieb:

    ComBox1->Items->Add(tmpString);

    Was ist ComBox1?

    Variable vom Typ CComboBox ==> ComBox1.AddString(tmpString);
    Variable vom Typ Pointer auf CComboBox ==> ComBox1->AddString(tmpString);
    Resource-ID ==> ((CComboBox *)GetDlgItem(ComBox1))->AddString(tmpString);



  • was erwartet "AddString" ?? ein char* oder ein CString?

    was ist tmpString für ein typ..



  • Das tut mir ausgesprochen Leid, dass ich den Fehler nicht gepostet hab. Hab da nicht drüber nachgedacht. Hier also die Fehlermeldung:

    Fehler 1 error C2664: 'System::Windows::Forms::ComboBox::ObjectCollection::Add': Konvertierung des Parameters 1 von 'std::string' in 'System::Object ^' nicht möglich c:\daten\matthias\spiele\bahnplan\programmierung_fahrzeitentool\programm_cpp\fahrzeitentooleingabe\fahrzeitentooleingabe\BetriebsstellenEingabe.h 49

    Die Typen die nicht konvertiert werden können sind also String -> Object (wobei ich immer der Meinung war ein String wäre auch ein Object?).

    Da ich die ComboBox mit dem Visual Studio Oberflächeneditor erstellt hab sollte das die Zeile sein, in der die Combox erstellt wird:

    internal: System::Windows::Forms::ComboBox^ DateneingabeBetriebsstellenComBoxKategorie;

    Der tmpString ist vom Typ std::String.

    Also nochmal Entschuldigung für die Umstände die ich bereite.

    Matthias



  • ich wusste doch das "items->add" kein MFC ist #gg

    das ist CLI - bitte verschieben

    hab CLI nicht lang gemacht, bin schnell zu c# ueber gegangen, aber soweit ich mich erinner kann man std:: angelegenheiten wie string, vector usw nicht in managed code verwenden, also du kannst kein std::string added
    du musst vorher den string nachg "String^" bekommen - wie weiss ich grad nicht

    std::string != System::String^



  • Alles klar,

    dann vielen Dank für die Hilfe, vielleicht kann mir ja im anderen Bereich jemand genaueres sagen.

    Danke



  • Dieser Thread wurde von Moderator/in dEUs aus dem Forum MFC (Visual C++) in das Forum C++/CLI mit .NET verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • So sollte die Umwandlung funktionieren:

    String^ str2 = gcnew String(str->c_str);
    

    Wenn str vom Type std::string ist.

    Mfg Marc-O


Anmelden zum Antworten