Form Ausgabe in ButtonClick



  • Hallo,ich lasse in Edit1 2 Zahlen Generieren und wenn ich auf den Button
    klick dann soll das Ergebniss aus zahl1 und zahl2 überprüft werden
    mein Problem ist nur das ich im ButtoClick nicht an das erg aus FormCreate komme -.-

    void __fastcall TForm3::FormCreate(TObject *Sender)
    {
    
    String user_erg1;
    float user_erg,erg, zahl1,zahl2;
    int aufgaben_art;
    
            srand(time (NULL) );
    
            aufgaben_art = rand()%1+1;
            zahl1 = rand()%10+1;
            zahl2 = rand()%5+1;
    
      if (aufgaben_art==1)
      {
        Edit1->Text=AnsiString(zahl1)+ " + " +AnsiString(zahl2)+ " = ";
        erg = zahl1+zahl2;
      }
    
    }
    
    //---------------------------------------------------------------------------
    
    void __fastcall TForm3::Button1Click(TObject *Sender)
    {
    String user_erg1;
    float user_erg,erg;
    
    Edit2->Text=user_erg1;
    user_erg = StrToFloat(user_erg1);
    
            if (user_erg==erg)
            {
            Edit4->Text="richtig";
            }
    
    }
    

    //---------------------------------------------------------------------------

    void __fastcall TForm3::Button1Click(TObject *Sender)
    {
    String user_erg1;
    float user_erg;

    Edit2->Text=user_erg1;
    user_erg = StrToFloat(user_erg1);

    if (user_erg==erg)
    {
    Edit4->Text="richtig";
    }

    }
    [/cpp]



  • derDA schrieb:

    ...
    mein Problem ist nur das ich im ButtoClick nicht an das erg aus FormCreate komme

    Dann pack' erg doch in den Header der TForm3-Klasse unter private:



  • Ähm das sagt mir gerade nicht wirklich viel 😞



  • Also wie man Header Datein erstellt das weiss ich aber was meinst du da mit Private.

    Ein beispiel wäre ganz gut.



  • Was private bedeutet, solltest Du wissen, auch wie man Membervariablen anlegt und verwendet.
    Der BCB ist NICHT für Anfänger geeignet, respektive die GUI-Programmierung ist nichts für Anfänger. Dafür benötigst Du fundierte C++-Kenntnisse.



  • Früher hab ich mich mal kurz mit Klassen und so beschäftigt hab gerade mal bei ein paar alten Programmen gekuckt da war auch was mit Private. Dann werd ich mich da mal wieder einarbeiten ...



  • Ich hab das jetzt mal so versucht aber das geht nicht.

    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    
    class rechner
    {
    
    private:
    int erg;
    
    public:
    
    };
    
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    
    rechner a;
    int erg;
    
    Edit4->Text=erg;
    
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
    rechner a;
    int erg;
    
      String user_erg1;
        float user_erg,zahl1,zahl2;
    
          int aufgaben_art;
    
            srand(time (NULL) );
    
            aufgaben_art = rand()%1+1;
            zahl1 = rand()%10+1;
            zahl2 = rand()%5+1;
    
            if (aufgaben_art==1)
    
            Edit1->Text=AnsiString(zahl1)+ " + " +AnsiString(zahl2)+ " = ";
            erg = zahl1+zahl2;
    
    }
    //---------------------------------------------------------------------------
    

    Dann pack' erg doch in den Header der TForm3-Klasse unter private:

    Hat vielleicht jemand ein Tutorial dazu?

    Die Tutorials die ich mir mal früher dazu angekuckt habe haben solche Sachen nicht erklärt. 😞



  • Nein, in die Unit1.h unter private: sollst Du es schreiben.



  • Funktionierte nicht 😞

    Unit1.h

    //---------------------------------------------------------------------------
    
    #ifndef Unit1H
    #define Unit1H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:	// Von der IDE verwaltete Komponenten
            TLabel *Label1;
            TLabel *Label2;
            TLabel *Antwort;
            TButton *Button1;
            TEdit *Edit1;
            TEdit *Edit2;
            TEdit *Edit3;
            TEdit *Edit4;
            void __fastcall Button1Click(TObject *Sender);
            void __fastcall FormCreate(TObject *Sender);
    private:	int ger;
    public:		// Anwender-Deklarationen
            __fastcall TForm1(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif
    

    Das Komplette Programm

    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    
    Edit4->Text=erg;
    
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
    
      String user_erg1;
        float user_erg,zahl1,zahl2;
    
          int aufgaben_art;
    
            srand(time (NULL) );
    
            aufgaben_art = rand()%1+1;
            zahl1 = rand()%10+1;
            zahl2 = rand()%5+1;
    
            if (aufgaben_art==1)
    
            Edit1->Text=AnsiString(zahl1)+ " + " +AnsiString(zahl2)+ " = ";
            erg = zahl1+zahl2;
    
    }
    //---------------------------------------------------------------------------
    


  • private: int ger;

    =>

    private: int erg;

    Du musst lernen, exakt zu arbeiten.



  • -.-

    In meinem Ordner gibt es einmal eine:

    Unit1.~h
    und eine: Unit1.h

    Ich hab das mit dem

    int erg;
    

    in beide Datein geschrieben und dann hatte ich es einmal nur in einer Datei aber beides funktionierte nicht.

    Was mach ich denn da immer falsch 😡

    [C++ Fehler] Unit1.h(25): E2238 Bezeichner 'TForm1::ger' mehrfach deklariert
    [C++ Fehler] Unit1.h(24): E2344 'TForm1::ger' bereits deklariert
    [C++ Fehler] Unit1.cpp(24): E2451 Undefiniertes Symbol 'erg'
    [C++ Fehler] Unit1.cpp(49): E2451 Undefiniertes Symbol 'erg'



  • Oh mann ich hab das ger wieder mit dem erg verwechselt ich glaub ich sollte so langsam mal ne pause machen.

    aber jetzt funktionierts danke für die hilfe.


Anmelden zum Antworten