Rechenprogramm mit RadioButtons

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
ViNic
Beiträge: 7
Registriert: Di 14. Mai 2013, 09:10
OS, Lazarus, FPC: Windows 7 (L 1.0.10 FPC 2.6.2)
CPU-Target: 64Bit

Rechenprogramm mit RadioButtons

Beitrag von ViNic »

Hallo,

gerade arbeite ich ein Delphi-Tutorial durch, um mir Lazarus näher anzuschauen. Das kleine Programm unter Lazarus funktioniert auch und ich habe mich jetzt einfach dran gemacht, weitere Objekte einzufügen um zu sehen, was ich damit so tun kann. Laut Tutorial kann das Programm nur Addieren. Über die RadioButtons möchte ich das Programm aber auch zum dividieren, subtrachieren usw. bringen. Der Sinn ist einfach um das verhalten der RadioButtons festzustellen, keine elegantere Lösung für den Rechner zu suchen.

Code: Alles auswählen

unit Unit1;
 
...
 
procedure TForm1.Button1Click(Sender: TObject);
var
  zahl1, zahl2, ergebnis : integer;
 
begin
  if Plus.Checked then
    begin
      zahl1 := StrToInt(Edit1.Text);
      zahl2 := StrToInt(Edit2.Text);
 
      ergebnis := zahl1 + zahl2;
 
      Label4.Caption := IntToStr(ergebnis);
    end;
 
  if Minus.Checked then
    begin
      zahl1 := StrToInt(Edit1.Text);
      zahl2 := StrToInt(Edit1.Text);
 
      ergebnis := zahl1 - zahl2;
 
      Label4.Caption := IntToStr(ergebnis);
    end;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  Close;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  if Plus.Checked then
    begin
      Label5.Caption := '+';
    end;
end;
 
procedure TForm1.MenuItem2Click(Sender: TObject);
begin
  Close;
end;
 
procedure TForm1.PlusChange(Sender: TObject);
begin
  if Plus.Checked then
    begin
      Label5.Caption :='+';
    end;
end;
 
procedure TForm1.MinusChange(Sender: TObject);
begin
  if Minus.Checked then
    begin
      Label5.Caption := '-';
    end;
end;
 
procedure TForm1.MultiplikatorChange(Sender: TObject);
begin
  if Multiplikator.Checked then
    begin
      Label5.Caption := '*';
    end;
end;
 
procedure TForm1.DivisorChange(Sender: TObject);
begin
  if Divisor.Checked then
    begin
      Label5.Caption := '/';
    end;
end;
Der Code läßt sich ohne Fehler übersetzen, aber bis auf addieren, wenn der RadionButton beim Minus aktiviert ist, macht es nichts. Bei der Subtraktion ergibt zb. alles immer := 0. Und das verstehe ich nun nicht. Wo liegt mein Fehler? .

Edit: Habe den Code abgekürzt und umbenannt, da ich es selbst schon nicht mehr lesen konnte :oops: . Ich hoffe es wird etwas klarer.

Benutzeravatar
theo
Beiträge: 10873
Registriert: Mo 11. Sep 2006, 19:01

Re: Rechenprogramm mit RadioButtons

Beitrag von theo »

Dein Problem hat mit Sorgfalt zu tun. ;-)

zahl1 := StrToInt(Edit1.Text);
zahl2 := StrToInt(Edit1.Text);

Was soll Edit1.Text - Edit1.Text denn anderes ergeben als 0?
Den Teil kannst du überhaupt an den Anfang der Prozedur nehmen, gilt ja für alle Operationen.

ViNic
Beiträge: 7
Registriert: Di 14. Mai 2013, 09:10
OS, Lazarus, FPC: Windows 7 (L 1.0.10 FPC 2.6.2)
CPU-Target: 64Bit

Re: Rechenprogramm mit RadioButtons

Beitrag von ViNic »

theo hat geschrieben:Dein Problem hat mit Sorgfalt zu tun. ;-)

zahl1 := StrToInt(Edit1.Text);
zahl2 := StrToInt(Edit1.Text);

Was soll Edit1.Text - Edit1.Text denn anderes ergeben als 0?
Den Teil kannst du überhaupt an den Anfang der Prozedur nehmen, gilt ja für alle Operationen.
Ach du meine Güte! Du kannst dir vielleicht sicher vorstellen, wie gern ich jetzt im Boden versinken würde ... ich glaubs nicht. Und ich habe den Code mehrmals angeschaut und habe es echt nicht gesehen.

Danke für die Hilfe :)

ViNic
Beiträge: 7
Registriert: Di 14. Mai 2013, 09:10
OS, Lazarus, FPC: Windows 7 (L 1.0.10 FPC 2.6.2)
CPU-Target: 64Bit

Re: Rechenprogramm mit RadioButtons

Beitrag von ViNic »

theo hat geschrieben: Den Teil kannst du überhaupt an den Anfang der Prozedur nehmen, gilt ja für alle Operationen.
Ja, richtig. Hab es mittlerweile umgesetzt. Ich habe vor dem Post, verschiedenes Ausprobiert und kräftig darin rumgemurkst. Mittlerer weile habe ich hier Ordnung reingebracht.

Nochmals, danke für die Hilfe.

MfG

Antworten