Autor |
Beitrag |
info.noob
Hält's aus hier
Beiträge: 3
|
Verfasst: Di 16.04.13 19:58
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:
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. |
Zuletzt bearbeitet von info.noob am Di 16.04.13 20:35, insgesamt 1-mal bearbeitet
|
|
WasWeißDennIch
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: Di 16.04.13 20:04
|
|
Mathematiker
      
Beiträge: 2622
Erhaltene Danke: 1448
Win 7, 8.1, 10
Delphi 5, 7, 10.1
|
Verfasst: Di 16.04.13 20:05
Unter
www.delphipraxis.net...box.html#post1211574
wird Dir doch sehr viel geholfen.
Genügt das nicht?
Mathematiker
_________________ Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
|
|
info.noob 
Hält's aus hier
Beiträge: 3
|
Verfasst: 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
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: 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]
Für diesen Beitrag haben gedankt: info.noob
|
|
info.noob 
Hält's aus hier
Beiträge: 3
|
Verfasst: Di 16.04.13 20:34
|
|
Delphi-Laie
      
Beiträge: 1600
Erhaltene Danke: 232
Delphi 2 - RAD-Studio 10.1 Berlin
|
Verfasst: Di 16.04.13 21:22
Nun seid mal nicht gar zu streng mit dem Neuling, bitte!
|
|
WasWeißDennIch
      
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: 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
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: Mi 17.04.13 09:37
info.noob hat folgendes geschrieben : |
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
_________________ Toleranz ist eine Grundvoraussetzung für das Leben.
|
|