![]() |
"Taschen"rechner programmieren...
Vorweg : Bin absoluter Newbie, ich hab mit Delphi gestern (in der Schule in Informatik) angefangen.
Also, wir sollten heute einen einfachen Rechner programmiern, mit + - / * Das hab ich problemlos hingekriegt, jetzt wollte ich noch eine = Taste einbauen, sodass man erst die Rechenart auswählt, anschließend auf = klickt und dadurch das Ergebnis dann angezeigt wird. Beim = Button hatte ich vorher Label1.Caption := FloatToStr(StrToFloat(edit1.text) x StrToFloat(edit2.text)) stehen, statt dem x jeweils das Rechenzeichen. Wie mach ich jetzt dass die angeklickte Rechenart verwendet wird? Thx im Voraus, by MICH :mrgreen: |
Re: "Taschen"rechner programmieren...
Willst du das mit RadioButtons machen? Dann kannst du schreiben.
Delphi-Quellcode:
Must halt 4 Radiobuttons auf deine Form nehmen. Dann kannst du immer eine Rechenart auswählen.
If RadioButtonMul.checked then Label1.Caption := FloatToStr(StrToFloat(edit1.text) * StrToFloat(edit2.text));
If RadioButtonAdd.checked then Label1.Caption := FloatToStr(StrToFloat(edit1.text) + StrToFloat(edit2.text)); //usw. |
Re: "Taschen"rechner programmieren...
Nee, keine RadioButtons... die ganz normalen Buttons halt.
Aber du hast mir trotzdem geholfen... Vor lauter Bäumen hab ich den Wald nicht gesehn und die Möglichkeit der IF-THEN Anweisung vergessen... :wall: Funktioniert jetzt prima. Ach ja... wie mach ich dass er aus den eingegebenen Zahlen (=> in den 2 Edit Fenstern) die Potenz bildet? |
Re: "Taschen"rechner programmieren...
1. mit vorschleife, oder
2. mit exp(exponent*ln(basis)) Um genau zu sein:
Delphi-Quellcode:
wobei in edit2 der exponent steht
Label1.Caption := FloatToStr(exp(StrToFloat(Edit2.Text) * ln(StrToFloat(edit1.Text))));
Edit: Genauer beschrieben |
Re: "Taschen"rechner programmieren...
Ich weiss ja nicht ob dir der Tipp von Chimaira geholfen hat, aber warum versuchst du nicht die Idee mit den Radiobuttons zu adaptieren?
Bsp: Die Radiogroup unsichtbar machen (Eigenschaft 'Visible' auf 'false') Dann kannst du daraus jederzeit die gewählte Rechenart auslesen
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject); // [+]
begin[color=darkred][/color] RadioGroup1.ItemIndex:=0; end; procedure TForm1.Button2Click(Sender: TObject); // [-] begin RadioGroup1.ItemIndex:=1; end; procedure TForm1.Button3Click(Sender: TObject); //[*] begin RadioGroup1.ItemIndex:=2; end; procedure TForm1.Button4Click(Sender: TObject); // [:] begin RadioGroup1.ItemIndex:=3; end; procedure TForm1.Button5Click(Sender: TObject); // [=] begin case RadioGroup1.ItemIndex of 0: Label1.Caption:=FloatToStr(StrToFloat(edit1.text) + StrToFloat(edit2.text)); 1: Label1.Caption:=FloatToStr(StrToFloat(edit1.text) - StrToFloat(edit2.text)); 2: Label1.Caption:=FloatToStr(StrToFloat(edit1.text) * StrToFloat(edit2.text)); 3: Label1.Caption:=FloatToStr(StrToFloat(edit1.text) / StrToFloat(edit2.text)); // Der Fall ItemIndex = -1 wird nicht behandelt, da ja keine Rechenart ausgewählt ist end; RadioGroup1.ItemIndex:=-1; end; |
Re: "Taschen"rechner programmieren...
Bessere Idee:
Delphi-Quellcode:
Ich hoffe nur, das war jetzt kein Overkill...
var
OpCode: byte = 0; //Globale Variable procedure Button1Click(Sender: TObject); //EIN Event für ALLE Buttons begin case TButton(Sender).Caption[1] of // da CASE keine Strings verarbeiten kann und wir sowieso nur ein Zeichen brauchen, behelfen wir uns mit dem ersten Chars des Caption-Strings '+': OpCode := 1; '-': OpCode := 2; '/': OpCode := 3; '*': OpCode := 4; '=': Case OpCode of 1: Label1.Caption:=FloatToStr(StrToFloat(edit1.text) + StrToFloat(edit2.text)); 2: Label1.Caption:=FloatToStr(StrToFloat(edit1.text) - StrToFloat(edit2.text)); 3: Label1.Caption:=FloatToStr(StrToFloat(edit1.text) / StrToFloat(edit2.text)); 4: Label1.Caption:=FloatToStr(StrToFloat(edit1.text) * StrToFloat(edit2.text)); end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz