Konvertierung von Zahl zu String (war :Verzweifel am einfachsten Program)



  • Hallo zusammen,
    ich habe vor kurzem angefangen C++ zu programmieren und komme momentan nicht weiter. Hier erstmal der Quelltex:

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    R = 6;
    V = 240;
    GM = V * R;
    Application->MessageBox (GM, "Titel", 0);
    }

    Ich möchte, dass ein Meldungsfenster erscheint, das mir die Lösung der Gleichung "GM = V * R" anzeigt. Leider kommt dabei immer diese Fehlermeldung: [C++ Fehler] Unit1.cpp(25): E2034 Konvertierung von 'int' nach 'char ' nicht möglich
    Ich habe die Variable GM mit char
    vereinbart und V und R mit int. Was mache ich falsche

    Vielen Dank, FreakC++

    /Edit akari : Bitte beim nächsten Mal aussagekräftigen Titel verwenden!



  • Hallo

    Du versucht ein int einem char* zuzuweisen. Du musst da natürlich casten. Genau das sagt aber auch die Fehlermeldung.

    chrische



  • Und was heißt das jetzt? Was muss ich tun?? Wie lautet der richtige Quelltext??
    Vielen Dank

    freakC++



  • Hallo

    So läuft das nicht. Du musst schon etwas Eigeninitiative zeigen. Bemühe doch einmal google nach dem Begriff casten oder schau bei wikipedia vorbei. Dort wird es erklärt und es gibt sogar meist noch einen kurzen Quelltext. Nachdem du das gemacht hast und dein Problem selber gelöst hast, wirst du dich befriedigt zurücklehnen und die nächsten Probleme mit neuen Werkzeugen in Angriff. Zum Abschluss bedankst du dich dann hier artig und alle sind zufrieden.

    chrische



  • Probier's mal so:

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    R = 6;
    V = 240;
    
    std::stringstream ss;
    ss << R * V;
    
    Application->MessageBox (ss.str().c_str(), "Titel", 0);
    }
    


  • Hallo

    Da frage ich mich warum du ihm nun eine Lösung präsentierst. Er hat oder hätte es sicher auch selber geschafft.

    chrische



  • Hey,
    erstmal danke ich für den Lösungsvorschlag. Doch verstehe ich nicht warum man hier so angemacht wird. Ich bin seit circa einer Stunde Mitglied in diesem Forum und habe keinerlei Erfahrungen wie es hier zugeht. Ich kenne es aus anderen Foren, dass man ruhig auch nochmal weiterfragen kann. Klar habe ich zunächst Google und Wikipedia benutzt, doch leider sind diese Erklärungen für mich (noch) zu schwer. Ich programmiere seit circa zwei Monaten! Daher bin ich auf Erklärungen von Usern wie euch angewiesen, denen man auch mal zwei Fragen stellen darf. Naja, für alles was ich falsch gemacht haben sollte, entschuldige ich mich!

    Um nochmals zum eigentlichen Thema zu kommen. Leider erhalte ich nun folgende Meldungen: [C++ Fehler] Unit1.cpp(25): E2316 'stringstream' ist kein Element von 'std'

    Vielen Dank,
    freakC++



  • Hallo

    Ich wollte dich überhaupt nicht anmachen, aber es hilft dir nicht, wenn wir dir zeigen, wie es geht. das Beste ist, wenn du es selber herausbekommst. Das sieht man doch jetzt sehr gut. Du bekommst eine Lösung und der Poster hat vergessen dir zu sagen, was du inkludieren musst. Das passiert, wenn man es nicht selber geschafft hat. Nun ist deine Aufgabe herauszufinden, was du brauchst, um std::stringstream zu benutzen. dazu empfehle ich dir:

    http://www.cppreference.com/cppsstream/constructors.html

    chrische



  • Hallo

    @ freak : Ich empfehle dir erstmal die Grundlagen von C++ in einem Konsolenprogramm zu üben, bevor du dich an die GUI-Programmierung wagst. Erstelle also im Builder ein Konsolenprojekt und arbeite so ein Tutorial durch.

    bis bald
    akari



  • Ich arbeite nach einem Buch, dass momentan dieses Thema hat. Da ich mir alles gut einprägen möchte, schreibe ich ähnliche Programme für mich selbst.

    In diesem Fall ist der Variabel GM eine Rechnung zugewiesen. Schreibe ich jedoch zum Beispiel GM = "Hallo, wie gehts"; und möchte ebenfalls, dass diese Variable mit dem zugewiesenem Wert im Meldungsfenster erscheint, dann funktioniert alles. Nur wenn ich halt GM = V * R; schreibe, tritt das Problem auf. Ich habe die mir geratenen Lösungen ausprobiert, jedoch ohne Erfolg!!

    Vielleicht habt ihr ja nochmehr Tipps für einen Anfänger wie mich
    Vielen Dank, FreakC++



  • Hallo

    Sorry, aber du hast nicht gelesen, was ich geschrieben habe. Die Lösung müsste funktionieren, wenn du einen header inkludierst:

    #include <sstream>
    

    Des weiteren solltest du dir bewusst sein, was du machst. Jetzt schau endlich mal bei wikipedia nach casten und dann wirst du verstehen, warum es einmal geht und einmal nicht. Du musst dir erstmal die Grundlagen reinziehen bevor du richtig loslegen kannst.

    chrische



  • Klar muss er lernen wie man castet, aber Casten löst hier das Problem nicht.



  • Hallo

    Du solltest dir insbesondere das Konzept der Variablentypen und deren Unterschiede mal durchlesen.
    Zusätzlich zu der Lösung in Standard C++ (siehe auch C++ FAQ, Artikel "Einmal String und zurück) hier noch die Builder-Lösung

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    int R = 6; // lokal reicht!
    int V = 240;
    int E = R * V;
    Application->MessageBox (IntToStr(E).c_str(), "Titel", 0);
    }
    

    bis bald
    akari



  • Hey,
    Vielen Dank für eure Hilfe!! Endlich klappt es! Ist zwar alles etwas kompliziert gelaufen, aber ich hoffe, dass ihr Verständnis für mich als Neueinsteiger habt!!!

    lg, FreakC++


Anmelden zum Antworten