AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[gelöst] Das Thema Taschenrechner

Ein Thema von spox · begonnen am 4. Dez 2007 · letzter Beitrag vom 6. Dez 2007
Antwort Antwort
Benutzerbild von spox
spox

Registriert seit: 23. Sep 2007
47 Beiträge
 
Delphi 7 Personal
 
#1

[gelöst] Das Thema Taschenrechner

  Alt 4. Dez 2007, 17:16
[gelöst]

Hallo!
Ich bin gerade dabei für mich als Übung einen Taschenrechner zu realisieren. Ich halte mich dabei an den Windows-Taschenrechner. Nun, die 4 Rechenarten funktionieren einwandfrei. Nur, wenn es jetzt an das Feintuning geht, haperts leider. Im Moment geht es darum, es zu schaffen, dass die 0 nicht mehrfach eingegeben wird, wenn sie gedrückt wird, und als einzige Ziffer im Display steht.
Nun, ich hoffe ihr könnt mir helfen. Alle "Zahlenbuttons" nehmen die Button1 Prozedur, da so ja der Aufwand veringert wird. Doch hier haperts jetzt mit der "nicht-nochmal-eingeben" null:
Delphi-Quellcode:
procedure TTaschenrechner.Button1Click(Sender: TObject);
begin
 if Eingabe.Text[1]=0 then
 begin
  Button16.Enabled:= false;
 end
 else
  Button16.Enabled:=true;
 Eingabe.Text:= Eingabe.Text+TButton(Sender).Caption[1];
end;
Ich hoffe ihr könnt mir helfen.
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Das Thema Taschenrechner

  Alt 4. Dez 2007, 17:19
Hi,

um dir zu helfen wären Infos nötig.
Wer ist Button16 und wer ist Button1? Haben diese Buttons unterschiedliche onClick-Ereignisse oder die gleichen?


Gruß
angos
Ansgar
  Mit Zitat antworten Zitat
Benutzerbild von spox
spox

Registriert seit: 23. Sep 2007
47 Beiträge
 
Delphi 7 Personal
 
#3

Re: Das Thema Taschenrechner

  Alt 4. Dez 2007, 17:29
Button 1-9 und Button 16(das ist die null) und Button15 (das ist das Komma), greifen auf Prozedur TTaschenrechner.Button1Click zurück.
Hier einmal der ganze Code:
Delphi-Quellcode:
unit trUni;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

const
 addition=1;
 subtraktion=2;
 multiplikation=3;
 division=4;

type
  TTaschenrechner = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Button10: TButton; //+ (- Button)
    Button11: TButton; //- (- Button)
    Button12: TButton; //* (- Button)
    Button13: TButton; // / (division) (- Button)
    Button14: TButton; // = (- Button)
    Button15: TButton;
    Button16: TButton;
    Button17: TButton; // C- Button
    Eingabe: TEdit; //das Display
    Button18: TButton; // wechsel zwischen postiv und negativ zahlen
    Button19: TButton; //CE Button
    Button20: TButton; //sqrt (noch nicht implementiert)
    Button21: TButton; //noch keine Funktion (kommt noch)
    Button22: TButton; //noch keine Funktion (kommt noch)
    procedure Button1Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button12Click(Sender: TObject);
    procedure Button13Click(Sender: TObject);
    procedure Button14Click(Sender: TObject);
    procedure Button17Click(Sender: TObject);
    procedure Button19Click(Sender: TObject);
    procedure Button16Click(Sender: TObject);
    procedure Button18Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Taschenrechner: TTaschenrechner;
  summand1,summand2,summe,cache:double;
  modus:integer;

implementation

{$R *.dfm}


procedure TTaschenrechner.Button1Click(Sender: TObject);
begin
 if Eingabe.Text[1]=0 then
 begin
  Button16.Enabled:= false;
 end
 else
  Button16.Enabled:=true;
 Eingabe.Text:= Eingabe.Text+TButton(Sender).Caption[1];
end;

procedure TTaschenrechner.Button10Click(Sender: TObject);
begin
 summand1:= StrToFloat(Eingabe.Text);
 Eingabe.Text:='0' ;
 Button13.Enabled:= false;
 Button12.Enabled:= false;
 Button11.Enabled:= false;
 modus:= 1;
end;

procedure TTaschenrechner.Button11Click(Sender: TObject);
begin
 summand1:= StrToFloat(Eingabe.Text);
 Eingabe.Text:= '0';
 modus:= 2;
 Button10.Enabled:= false;
 Button12.Enabled:= false;
 Button13.Enabled:= false;
end;

procedure TTaschenrechner.Button12Click(Sender: TObject);
begin
 summand1:= StrToFloat(Eingabe.Text);
 Eingabe.Text:= '0';
 modus:= 3;
 Button10.Enabled:= false;
 Button11.Enabled:= false;
 Button13.Enabled:= false;
end;

procedure TTaschenrechner.Button13Click(Sender: TObject);
begin
 summand1:= StrToFloat(Eingabe.Text);
 Eingabe.Text:= '0';
 modus:= 4;
 Button10.Enabled:= false;
 Button11.Enabled:= false;
 Button12.Enabled:= false;
end;

procedure TTaschenrechner.Button14Click(Sender: TObject);
begin
 summand2:= StrToFloat(Eingabe.Text);
  case modus of
  addition:
   begin
    summe:= summand1+summand2;
  // FloatToStr(summe);
 {  if length (FloatToStr(summe))>=14 then
    begin
    FloatToStr(summe)[14]:='E';
    end;            }

    Eingabe.Text:= FloattoStr(summe);
    Button10.Enabled:= true;
    Button11.Enabled:= true;
    Button12.Enabled:= true;
    Button13.Enabled:= true;
   end;
  subtraktion:
   begin
    summe:= summand1-summand2;
    Eingabe.Text:= FloatToStr(summe);
    Button10.Enabled:= true;
    Button11.Enabled:= true;
    Button12.Enabled:= true;
    Button13.Enabled:= true;
   end;
  multiplikation:
   begin
    summe:= summand1*summand2;
    Eingabe.Text:= FloatToStr(summe);
    Button10.Enabled:= true;
    Button11.Enabled:= true;
    Button12.Enabled:= true;
    Button13.Enabled:= true;
   end;
  division:
   begin
    summe:= summand1/summand2;
    Eingabe.Text:= FloatToStr(summe);
    Button10.Enabled:= true;
    Button11.Enabled:= true;
    Button12.Enabled:= true;
    Button13.Enabled:= true;
   end;
  end;
end;

procedure TTaschenrechner.Button17Click(Sender: TObject);
begin
 Eingabe.Text:= '';
 summand1:= 0;
 summand2:= 0;
 Button10.Enabled:= true;
 Button11.Enabled:= true;
 Button12.Enabled:= true;
 Button13.Enabled:= true;
end;

procedure TTaschenrechner.Button19Click(Sender: TObject);
begin
 Eingabe.Text:= '';
end;

procedure TTaschenrechner.Button16Click(Sender: TObject);
begin
{ if (length (Eingabe.Text)=1 and Eingabe.Text:= (IntToStr(0))) then
  Button16.Enabled:= false
else
  Button16.Enabled:= true;     }

end;

procedure TTaschenrechner.Button18Click(Sender: TObject);
begin
 cache:= StrToFloat (Eingabe.Text);
 cache:= cache*(-1);
 Eingabe.Text:= FloatToStr (cache);
end;

procedure TTaschenrechner.FormCreate(Sender: TObject);
begin
 if Eingabe.Text[1]='0then
 begin
  Button16.Enabled:= false;
 end
 else
  Button16.Enabled:=true;
end;

end.
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: [gelöst] Das Thema Taschenrechner

  Alt 6. Dez 2007, 15:14
puh, nimms mir nicht böse, aber ich weis warum du da niocht unbedingt durchkommst. tipp: benenne alle deine Buttons, edits und anderen Komponenten um (zB btn1, btn2, btnPlus, btnGleich,....)

Delphi-Quellcode:
procedure TTaschenrechner.Button1Click(Sender: TObject);
begin
// Eingabe.Text[1] ist ein String und sollte dann auch als solcher abgefragt werden. Wenn eingabe.text ='' ist wird diese Funktion // eine Exception hervorrufen, das solltest du abfangen (zB if Length(eingabe.text) >= 1 then...)
if Eingabe.Text[1]='0then // vorher: if Eingabe.Text[1]=0 then
begin
  Button16.Enabled:= false;
end
else
  Button16.Enabled:=true;
Eingabe.Text:= Eingabe.Text+TButton(Sender).Caption[1];
end;

für dein Problem mache dir die funktion OnChange von dem Edit zu Nutzen.
Delphi-Quellcode:
procedure TTaschenrechner.eingabeChange(Sender: TObject);
begin
  if Eingabe.Text = '00then Eingabe.Text := '0';
end;
Ansgar
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz