Entwickler-Ecke
Sonstiges (Delphi) - Taschenrechner mit ListBox
info.noob - Di 16.04.13 19:58
Titel: Taschenrechner mit ListBox
Hallo,
also wir haben in Informatik jetzt aufbekommen, einen Taschenrechner mit einer ListBox zu programmieren. Leider hat uns mein Lehrer rein gar nichts dazu gesagt (wir benutzen in der Schule übrigens Delphi 5). Ich bin jetzt schon so weit gekommen, dass ich die ganzen Vorgänge (also addieren,subtrahieren,etc.) den Items in der ListBox zugeordnet habe. Jetzt besteht mein Problem aber darin, dass eine Fehler Meldung aufploppen soll, wenn durch 0 geteilt wird. Wenn ich das nämlich schreibe, wird aufeinmal auch bei "addieren" oder "multiplizieren" geteilt.
Ich hoffe jemand kann mir helfen, denn wir haben grad erst mit dem Thema angefangen und ich kriege leider auch keine Hilfe vom Lehrer.
Hier der Quellcode:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, jpeg;
type TForm1 = class(TForm) Label1: TLabel; zaehler: TEdit; reset: TButton; zaehler2: TEdit; Label2: TLabel; Label3: TLabel; Image1: TImage; ListBox: TListBox; berechnen: TButton; schliessen: TButton; ergebnis: TLabel; Timer: TTimer; fehler1: TLabel; fehler2: TLabel; Image2: TImage; procedure berechnenClick(Sender: TObject);
private public end;
var Form1: TForm1; a,b: real; implementation
{$R *.DFM}
procedure TForm1.berechnenClick(Sender: TObject);
begin a:= StrtoFloat(zaehler.Text); b:= StrtoFloat(zaehler2.Text);
if ListBox.selected[0] then ergebnis.Caption:= FloattoStr(a + b); if ListBox.selected[1] then ergebnis.Caption:= FloattoStr(a - b); if ListBox.selected[2] then ergebnis.Caption:= FloattoStr(a * b);
if (ListBox.selected[3]) and (b=0) then Showmessage('Durch 0 darf nicht geteilt werden') else begin ergebnis.Caption:= FloattoStr(a / b); end;
end;
end. |
info.noob - Di 16.04.13 20:12
Moderiert von
Narses: Komplett-Zitat des letzten Beitrags entfernt.
Da hab ich es ja vorher versucht, aber wirklich beantwortet wurde meine Frage leider nicht.
Ich würde ja auch im Internet schauen oder eben meinen Lehrer fragen, aber im Internet steht nix und mein Lehrer sagt, wir müssen alles selbst herausfinden!
WasWeißDennIch - Di 16.04.13 20:20
Und mal selbst nachzudenken, was else bedeutet, kommt Dir nicht in den Sinn? Das sollte sogar im Internet stehen.
[edit] OK, ich will mal nicht so sein. Schau Dir mal den Unterschied an:
Delphi-Quelltext
1: 2: 3: 4:
| if (ListBox.selected[3]) and (b=0) then begin end; |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| if (ListBox.selected[3]) then begin if (b=0) then begin end; end; |
[/edit]
info.noob - Di 16.04.13 20:34
Moderiert von
Narses: Komplett-Zitat des letzten Beitrags entfernt.
Danke! ^^ Der tipp mit dem Else war schon genug! :D
Ich habs einfach weggelassen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.berechnenClick(Sender: TObject); var a, b: real; begin a:= StrtoFloat(zaehler.Text); b:= StrtoFloat(zaehler2.Text);
if ListBox.selected[0] then ergebnis.Caption:= FloattoStr(a + b); if ListBox.selected[1] then ergebnis.Caption:= FloattoStr(a - b); if ListBox.selected[2] then ergebnis.Caption:= FloattoStr(a * b); if (ListBox.selected[3]) and (b=0) then begin Showmessage('Durch 0 darf nicht geteilt werden')end; if (ListBox.selected[3]) and (b <> 0)then ergebnis.Caption:= FloattoStr(a / b); end; |
Jetzt funktionierts einwandfrei!:)
Delphi-Laie - Di 16.04.13 21:22
Nun seid mal nicht gar zu streng mit dem Neuling, bitte!
WasWeißDennIch - Mi 17.04.13 08:29
Ich hätte es ja eher so geschrieben:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| if ListBox.selected[3] then begin if b = 0 then Showmessage('Durch 0 darf nicht geteilt werden') else ergebnis.Caption:= FloattoStr(a / b); end; |
Dass der 4. Listboxeintrag selektiert ist, weiß man ja bereits, wenn man den äußeren Block betritt.
Tranx - Mi 17.04.13 09:37
info.noob hat folgendes geschrieben : |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, jpeg;
type TForm1 = class(TForm) Label1: TLabel; zaehler: TEdit; reset: TButton; zaehler2: TEdit; Label2: TLabel; Label3: TLabel; Image1: TImage; ListBox: TListBox; berechnen: TButton; schliessen: TButton; ergebnis: TLabel; Timer: TTimer; fehler1: TLabel; fehler2: TLabel; Image2: TImage; procedure berechnenClick(Sender: TObject);
private public end;
var Form1: TForm1; a,b: real; implementation
{$R *.DFM}
procedure TForm1.berechnenClick(Sender: TObject);
begin a:= StrtoFloat(zaehler.Text); b:= StrtoFloat(zaehler2.Text);
if (ListBox.selected[3]) and (b=0) then Showmessage('Durch 0 darf nicht geteilt werden') else begin if ListBox.selected[0] then Ergebnis.Caption:= FloattoStr(a + b); if ListBox.selected[1] then Ergebnis.Caption:= FloattoStr(a - b); if ListBox.selected[2] then Ergebnis.Caption:= FloattoStr(a * b); if Listbox.selected[3] then Ergebnis.Caption:= FloattoStr(a / b); end else begin end;
end;
end. | |
So müsste das funktionieren
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!