Abfolge ??



  • Hallo

    mal ein einfaches Beispiel für + :

    void __fastcall TForm1::Button1AddClick(TObject *Sender)
    {
      float Zahl = StrToFloat(Label1->Caption); // Zahl aus Label holen und speichern
      Ergebnis += Zahl; // Ergebnis bestimmen
      Label1->Caption = ""; // Eingabe zurücksetzen
      }
    

    Ich empfehle dir noch, die globale Variable

    float Ergebnis;
    

    in die Header-Datei des Forms, direkt unter das Symbol

    private :
    

    zu schreiben. Den Rest brauchst du nicht.

    bis bald
    akari



  • das sollte eigentlich ganz gut klappen, aber er bringt noch die fehlermeldung mit der gleitkommazahl
    irgendwie bringt er zetzt immer das doppelte de zahl als ergebnis.

    appropos gleitkommazahl, was ist das und wie bringe ich es wieder weg?



  • Hallo

    aber er bringt noch die fehlermeldung mit der gleitkommazahl

    welche Fehlermeldung genau?
    Bitte mit betreffendem Code-Auschnitt.

    appropos gleitkommazahl, was ist das und wie bringe ich es wieder weg?

    int = Festkommazahl = Ganze Zahl
    float = Gleitkommazahl = Gebrochene Zahl, z.B. 1,3
    näheres kannst du in einem passendem Buch oder Tutorial finden, siehe Menüeintrag ganz oben rechts.

    bis bald
    akari



  • 1.25 ist kein gültiger gleitkommawert

    muss ich da mit FloatToStrF arbeiten?

    und zum addieren macht er zum beispiel wenn ich 2 + 2 klicke, 4 aber wenn ich nochmals +2 klicke macht er 8 dann 16 usw

    er verdoppelt alles 😕



  • Hallo

    1.25 ist kein gültiger gleitkommawert

    im deutschen wird Komma als Dezimaltrennzeichen genommen.

    FloatToStrF

    schau in die Hilfe zu diesem Befehl, damit du weist wofür du das brauchst

    und zum addieren macht er zum beispiel wenn ich 2 + 2 klicke, 4 aber wenn ich nochmals +2 klicke macht er 8 dann 16 usw

    kann es sein, das du das Ergebnis nach der Operation noch mal ins Label für die Eingabe schreibst?

    bis bald
    akari



  • tönt für dich warscheinlich komisch aber ja

    also in einem Label wo auch die Zahlen kommen wenn man sie klickt.

    das mit dem komma ist mir jetzt klargeworden

    ist das wenn ich das so mache unmöglich oder wie kann ich das verbessern?



  • noch zu dem was

    void __fastcall TForm1::ButtonNumberClick(TObject *Sender)
    {
      TControl *Component = dynamic_cast<TComponent *> (Sender);
      if (Component == NULL) return;
      AnsiString Zeichen = IntToStr(Component->Tag);
      Label1 ->Caption = Label1 ->Caption + Zeichen;
    }
    

    bei ButtonNumberClick ist doch die Zahl einzufügen, oder? also zB Zahl10Click und das dann bei allen, oder?

    er sagt Component sei ein undefiniertes Symbol. und

    [C++ Fehler] Styl.cpp(21): E2034 Konvertierung von 'TComponent *' nach 'TControl *' nicht möglich
    

    Was muss ich dagegen tun?

    und was muss ich mit dem einen Label machen, damit er richtig rechnet?

    danke



  • Hallo

    bei ButtonNumberClick ist doch die Zahl einzufügen, oder? also zB Zahl10Click und das dann bei allen, oder?

    Nein, eben nicht. Es gibt nur eine Methode, und die heißt ButtonNumberClick.
    Auf diese verweist du mit dem Objektinspektor die OnClickEvents aller Ziffernbuttons.
    Vergiss nicht, die Tags der Buttons zu belegen und die Methode im private-Part der Klassendeklaration in der Header-Datei des Forms zu deklarieren.

    und was muss ich mit dem einen Label machen, damit er richtig rechnet?

    Ich kann keine Fehlerquelle ausmachen, poste noch mal relevaten aktuellen Code oder Debuge mal. Such mal im Forum nach *Breakpoint*, dann solltest du finden wie das geht.

    bis bald
    akari



  • Auf diese verweist du mit dem Objektinspektor die OnClickEvents aller Ziffernbuttons.

    also ein allgemeiner OnKlickEvent solls geben, aber ist das wenn ich auf der TForm1 bin auf OnKlick klicke? oder wo ist dieser NumberKlick?

    irgendwie bin ich zu dumm für das 😞



  • und meinst du mit Funktion zuweisen zum beispiel etwas, das nachher oben als constante eingegeben werde muss?
    oder was meinst du damit?

    das prinzip versteh ich schon nur die Umsetzung...



  • Hallo

    also noch mal von von :
    - lösch aus allen bestehenden Eventfunktion für Ziffernbuttons die Befehle, und speichere das Projekt. Dann sollten die Funktion komplett verschwinden.
    - Nummerier die Tags der Ziffernbuttons anhand der dargestellten Ziffer
    - Gehe zu einem Ziffernbutton, wähle im Objektinspektor die Seite Event aus und
    gib bei OnClick einfach ButtonNumberClick ein. Danach <Enter>
    - In die erscheinende Funktion ButtonNumberClick kopierst du den von mir geposteten Code mit dem cast<> rein
    - Jetzt gehst du durch alle Ziffernbuttons durch und setzt den OnClickEvent auf die ButtonNumberClick-Methode, indem du diese einfach im Dropdown auswählst

    Dann hast du eine gemeinsame Funktion für die Ziffern.

    bis bald
    akari



  • cool bis hierhin hats geklappt jetzt sagt er nur noch

    [C++ Fehler] Styl.cpp(67): E2034 Konvertierung von 'TComponent *' nach 'TControl *' nicht möglich
    

    muss ich TComponent irgendwo angeben?

    danke



  • Hallo

    sorry kleiner Fehler meinerseits :
    [cpp] TComponent *Component = dynamic_cast<TComponent *> (Sender);[/cpp]

    bis bald
    akari



  • ah ok

    aber jetzt sagt er was komisches:

    [Linker Fehler] Unresolved external '__fastcall TForm1::FormClick(System::TObject *)' referenced from C:\DOKUMENTE UND EINSTELLUNGEN\PALADIN\DESKTOP\DYCON\C++\PROJECT_STYLRECHNER\STYL.OBJ
    




  • ich glaube das ist ein wenig anderes Problem weil bei mir hats kein OnKlick sondern nur

    [Linker Fehler] Unresolved external '__fastcall TUnique::FormClick(System::TObject *)' referenced from ...STYL.OBJ

    TUnique::FormClick

    ist da irgend ein OnKlick?



  • Hallo

    wie wie Methode heißt spielt keine Rolle, geh in die Headerdatei und lösch die Deklaration der Methode.
    (Ich gehe davon aus, das du die nicht mehr brauchst)

    bis bald
    akari



  • ok hat alles geklappt

    danke

    hast mir wirklich geholfen

    (Für meine Unwissenheit habe ich aber eine Ausrede:
    Bin erst 15 und hab erst gerade mit C++ angefangen) 😉 😃 :p


Anmelden zum Antworten