Text1 mit Text2 tauschen, Rechnung mit Int+Float UND Button1 durch Bedingung aktivieren



  • Hallo zusammen,

    entschuldigt bitte, wenn ich hier mit so einem Berg Fragen ankomme, aber es sieht für mich so aus, als wäre die Lösung der folgenden Probleme ziemlich schnell gefunden...^^
    ich habe drei Probleme:

    Ich habe jeweils einen Text in Edit1 und Edit2 und möchte diese mit einem Button-Click tauschen. Gibt es dafür eine Funktion? Ursprünglich wollte ich das so machen:

    Edit1->Text=Edit2->Text;
    Edit2->Text=Edit1->Text;

    ...aber dann kopiert er den Text halt nur von E2 in E1, da er ja von oben nach unten abarbeitet.

    Ich will einen Integer-Wert eingeben und einen Float-Wert rausbekommen.
    Ich habe:

    int z1,z2;
    float i;

    z1=StrToInt (Edit1->Text);
    z2=StrToInt (Edit2->Text);
    i=z2/z1;

    Label1->Caption=FormatFloat ("0.00",i);

    ...allerdings bekomme ich da nur 0,00 raus. Ich habe probiert z1 und z2 als float zu deklarieren, was auch funktioniert hat, aber ich möchte diese beiden Variablen gerne als Int haben.

    Ich möchte einen Button1 enabled machen, indem erst ein RadionButton1 ausgewählt wurde und Edit1 und Edit2 ausgefüllt sind. Er soll also solange "nicht drückbar" sein, wie nichts in beiden Edit-Feldern steht und noch kein RadioButton ausgewählt wurde. Hier mein Gedanke:

    void __fastcall TForm1::RadioButton1Click(TObject *Sender)

    if (Edit1!="" && Edit2!="")
    {
    Button1->Enabled=True;
    }

    Ich hoffe es kann mir jemand helfen.
    MfG at0m_t0mato



  • Hallo,

    Nutz bitte die Code-Tags, das sieht etwas besser aus.
    1.
    Speichere den Inhalt des einen Editfeldes vorher so wie es die std::swap Funktion macht.

    String tstr = Edit2->Text; 
    Edit2->Text = Edit1->Text; 
    Edit1->Text = tstr;
    

    Das Ergebnis der Division zweier ints ist auch wieder int. Du musst also mindestens einen der beiden ints vorher in ein float konvertieren.

    int z1 = StrToInt (Edit1->Text); 
    int z2 = StrToInt (Edit2->Text); 
    float i = z2/float(z1);
    

    3. Du musst schon den Inhalt deiner Editfelder abfragen ob diese leer sind.
    Versuchs mal selbst.



  • alles klar. vielen dank schon mal!!!
    ich probiers gleich mal aus 🙂



  • achso und für 3. hatte ich auch schon probiert:

    void __fastcall TForm1::RadioButton1Click(TObject *Sender) 
    
    if (Edit1->Text!="" && Edit2->Text!="") 
    { 
    Button1->Enabled=True; 
    }
    

    ...du meintest sicher das mit "Inhalt abfragen" oder? Nur leider hat das auch nicht funktioniert.



  • Was hat nicht funktioniert? Bitte erläutere deinen Fehler genauer. Hat es nicht kompiliert? Hat es anders als gewollte funktioniert?
    Hast du den Debugger benutzt um herauszubekommen was falsch läuft?



  • Ja, kompiliert hat er das. Also er schreibt keinen Fehler aus.
    Aber die gewünschte funktion wird nicht ausgeführt. Nach meinem verständnis sollte das programm den unaktivierten Button1 enabled machen, nachdem radiobutton1 ausgewählt wurde UND in Edit1 + Edit2 IRGENDETWAS drin steht.



  • Vom Prinzip her macht deine Funktion das auch.

    void __fastcall TForm1::RadioButton1Click(TObject *Sender) { 
    if (Edit1->Text != "" && Edit2->Text != "") { 
        Button1->Enabled = true; 
    }
    

    Braunstein schrieb:

    Hast du den Debugger benutzt um herauszubekommen was falsch läuft?

    Hast du mal einen Breakpoint in die Funktion gesetzt?



  • Nein. Ich weiß auch gar nicht, was das ist. Wie und wo könnte ich den denn setzen? Bzw. was tut dieser breakpoint überhaupt?



  • Lies bitte mal das hier:
    http://www.cbuilder.de/artikel/cbdebug/cbdebug.htm
    Das ist eine Kurzanleitung für eine recht alte Version des C++Builders. Die grundlegenden Sachen stimmen aber noch.



  • Du kannst einen Button auch mit einem [/c]TAction[/c] Objekt verknüpfen. Das TAction Objekt kann seinen Status über ein Event steuern, das macht die Sache manchmal einfacher...



  • Vielen Dank für eure Hilfe!
    Find ich klasse, dass sich einige Leute noch mit den Anfängern auseinandersetzen.

    Meine Probleme sind nun alle behoben!

    Grüße


Anmelden zum Antworten