Problem mit Variablen



  • Ich grüße ersteinmal alle ganz lieb. 🙂
    Bin mir nicht ganz sicher ob dieses Thema hier rein gehört.
    Benutzte Visual Studio 2005.
    Ich habe mich jetzt mal an C++ ran getraut und bin auch gleich auf ein Problem gestoßen:
    Ich will in einer Textbox den inhalt einer Variablen auf Knopfdruck anzeigen.
    So sieht das es bis jetzt aus:

    int test;
    test = "1";
    tb_test->text = test;
    

    Die fehler sehen wie folgt aus:
    error C2248: 'System::Windows::Forms::Control::text' : cannot access private member declared in class 'System::Windows::Forms::Control'
    error C2440: '=' : cannot convert from 'int' to 'System::String ^'
    error C2440: '=' : cannot convert from 'const char [2]' to 'int'

    Hab jetzt schon nen weilchen gesucht aber keine lösung gefunden vieleicht ist mein ansatz ja auch falsch. Wie gesagt ist heute das erste mal mit C++

    Schon mal danke
    Rorix



  • naja, eigentlich ganz einfach, du versuchst zunächst einem integer (ganzzahl) wert einen string zuzuweisen...
    sagt ja auch der compiler.
    wenn du jetzt die anführungszeichen weg lässt, würde das ganze schon besser aussehen, aber ich bin mir nicht sicher, ob du dem text der textbox eine zahl zuweisen lassen kannst, oder ob du da wieder irgendwie auf string konvertieren musst



  • Rorix schrieb:

    error C2248: 'System::Windows::Forms::Control::text' : cannot access private member declared in class 'System::Windows::Forms::Control'

    Das Element 'text' ist private und deshalb außerhalb der Klasse Control nicht zu erreichen (vermutlich hat sie aber Setter-Methoden, um darauf zuzugreifen)

    error C2440: '=' : cannot convert from 'int' to 'System::String ^'

    Ein int (Zahlenwert) kann nicht direkt in einen String umgewandelt werden. Lösungen dazu findest du in der C++ FAQ ("einmal String nach Zahl und zurück").

    error C2440: '=' : cannot convert from 'const char [2]' to 'int'

    Das selbe Problem - hier reicht als Lösung einfach, die Anführungszeichen wegzulassen (oder du gibst der Variable den erwarteten Typ char* bzw. System::String^)

    PS: Die Fehlermeldungen püassen übrigens nicht zu reinem C++ 😉



  • Dieser Thread wurde von Moderator/in CStoll aus dem Forum 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.



  • Danke für die schenllen Antworten 🙂

    CStoll schrieb:

    Das Element 'text' ist private und deshalb außerhalb der Klasse Control nicht zu erreichen (vermutlich hat sie aber Setter-Methoden, um darauf zuzugreifen)

    Das musst du mir nochmal näher erklären mit dem Setter. Wie gesagt bin ein echter C++ Neuling 😉



  • Hi,

    das Problem ist ziemlich einfach.
    In vielen Fällen muss man einen int in einen String umwandeln.
    Das macht man so...

    int test = 14;
    textBox1->Text = Convert::ToString(test);//int in einen String Konvertieren.
    

    Befinden sich die TextBox in der gleichen Form (Fenster)?

    Gruß, Doug_HH



  • Ein Setter ist eine Hilfsmethode, um eine private Membervariable von außen ändern zu können (die kann noch einige Nebenwirkungen und Validierungen haben). Wie der Setter für Control::text heißt, müsstest du die CLI-Experten fragen.



  • Doug_HH schrieb:

    Befinden sich die TextBox in der gleichen Form (Fenster)?

    Ja ist im Gleichen Form.

    Ok danke für die antworten werde das dann heute nochmal alles Versuchen und mich dann nochmal melden.

    Gruß Rorix



  • Ok hatt geklapt.
    Sieht nun so aus:

    int test=1;
    textbox1->Text = Convert::ToString(test);
    

    Danke nochma für eure Hilfe.

    Rorix



  • Hi Rorix,
    du machst da übrigens C++/CLI! Das ist schon anders als C++. In C++ gibt es z.B. keine Properties (Setter/Getter). Wenn du Anfänger bist, ist es mit Sicherheit sinnvoller entweder C# oder C++ zu lernen...


Anmelden zum Antworten