Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Taschenrechner (https://www.delphipraxis.net/134965-taschenrechner.html)

safak67 2. Jun 2009 11:14


Taschenrechner
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich soll ein Taschenrechner programmieren habe auch damit angefangen. Ich habe aber einige Probleme.

Ich habe nur Ein Textfeld und von da aus muss ich alles ausrechnen aber hab keine Ahnung wie das geht, kann mir jemand dabei helfen.. Mein bisheiger Quelltext

Delphi-Quellcode:
unit Calculator_Main;

interface

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

type
  TFormCalculator_Main = class(TForm)
    BitBtn1: TBitBtn;
    EditCalc: TEdit;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    BitBtn5: TBitBtn;
    BitBtn6: TBitBtn;
    BitBtn7: TBitBtn;
    BitBtn8: TBitBtn;
    BitBtn9: TBitBtn;
    BitBtn0: TBitBtn;
    BitBtnDecimalSep: TBitBtn;
    BitBtnResult: TBitBtn;
    BitBtnPlus: TBitBtn;
    BitBtnMinus: TBitBtn;
    BitBtnDiv: TBitBtn;
    BitBtnMult: TBitBtn;
    BitBtnParantheseLeft: TBitBtn;
    BitBtnParantheseRight: TBitBtn;
    procedure BitBtnClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  FormCalculator_Main: TFormCalculator_Main;

implementation

{$R *.dfm}

procedure TFormCalculator_Main.BitBtnClick(Sender: TObject);
begin
  EditCalc.Text := EditCalc.Text + TBitBtn(Sender).Caption;
end;

end.

oldmax 2. Jun 2009 11:51

Re: Taschenrechner
 
Hi
Wie wär es mal mit ein wenig Eigeniniative ? Taschenrechner.... Suchen und... anfangen, sich damit zu beschäftigen. Hier ist sicherlich nicht das Forum, das Hausaufgaben macht !
Gruß oldmax

safak67 2. Jun 2009 12:26

Re: Taschenrechner
 
Eigeninitiative habe ich schon.. Ich habe auch ein Taschenrechner programmiert, aber ich hatte da zwei Textfelder und jetzt habe ich nur ein Textfeld und da ist das Problem. Ich weiß nicht wo ich die berechnungen schreiben soll.

DeddyH 2. Jun 2009 12:31

Re: Taschenrechner
 
Du brauchst einfach nur Zwischenvariablen, in denen Du die Werte abspeicherst.

safak67 2. Jun 2009 13:26

Re: Taschenrechner
 
Wie mache ich denn die Zwischenspeicherung?

DeddyH 2. Jun 2009 13:53

Re: Taschenrechner
 
Delphi-Quellcode:
type
  TFormCalculator_Main = class(TForm)
    ...
  private
    FZahl: double; //Puffervariable
  ...
  end;

...

procedure TFormCalculator_Main.BitBtnClick(Sender: TObject);
begin
  //FZahl berechnen
  FZahl := FZahl + StrToFloat(TBitBtn(Sender).Caption);
  //und ausgeben
  EditCalc.Text := FloatToStr(FZahl);
end;
So in etwa, wobei ich hier keine Fehlerbehandlung implementiert habe, aber das sollte ja auch nur ein Beispiel zur Veranschaulichung sein.

safak67 2. Jun 2009 14:05

Re: Taschenrechner
 
ok, wird dann die ganze berechnung in diesem procedure gemacht..?
Delphi-Quellcode:
procedure TFormCalculator_Main.BitBtnClick(Sender: TObject);

mkinzler 2. Jun 2009 14:07

Re: Taschenrechner
 
Wie/wo machst du es bisher?

egon.kaschuba 2. Jun 2009 14:37

Re: Taschenrechner
 
:firejump:

Hallo Safak67,

schau Dir mal den Code an.
Das könnte sehr wohl funktionieren.

Gruß
Egon




Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Button10: TButton;
    Button11: TButton;
    Button12: TButton;
    Button13: TButton;
    Button14: TButton;
    Button15: TButton;
    Button16: TButton;
    Label1: TLabel;
    Button17: TButton;
    Button18: TButton;
    procedure Button18Click(Sender: TObject);
    procedure Button17Click(Sender: TObject);
    procedure ZeiButtonClick(Sender: TObject);
    procedure OpButtonClick(Sender: TObject);
    procedure IstButtonClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button19Click(Sender: TObject);
    procedure Hilfe2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

var strBuff1, strBuff2: string;  // Operanden- u. Ergebnisspeicher
    op: Char;                    // Operation (+,-,*,/)
    mode: Byte = 1;              // 1 = ersten Operand eingeben
                                  // 2 = zweiten Operand eingeben

procedure TForm1.Button17Click(Sender: TObject); // Anzeige löschen
begin
 if mode = 1 then StrBuff1 := ''
             else StrBuff2 := '';
 Label1.Caption := ''
end;

procedure TForm1.ZeiButtonClick(Sender: TObject);      // Zahleneingabe
var zei: Char;     // eingegebenes Zeichen
begin
 if Sender = Button10 then zei := '0';
 if Sender = Button1 then zei := '1';
 if Sender = Button2 then zei := '2';
 if Sender = Button3 then zei := '3';
 if Sender = Button4 then zei := '4';
 if Sender = Button5 then zei := '5';
 if Sender = Button6 then zei := '6';
 if Sender = Button7 then zei := '7';
 if Sender = Button8 then zei := '8';
 if Sender = Button9 then zei := '9';
 if Sender = Button11 then zei := '.';
 if mode = 1 then
 begin
  strBuff1 := strBuff1 + zei;
  Label1.Caption := strBuff1
 end else
 begin
  strBuff2 := strBuff2 + zei;
  Label1.Caption := strBuff2
 end
end;

procedure TForm1.OpButtonClick(Sender: TObject);  // Operation auswählen
begin
 if mode = 1 then
 begin
  if Sender = Button14 then op:= '+';
  if Sender = Button15 then op:= '-';
  if Sender = Button12 then op:= '*';
  if Sender = Button13 then op:= '/';
  StrBuff2:='';
  mode := 2
 end
end;

procedure TForm1.IstButtonClick(Sender: TObject); // Ergebnis berechnen
var res, op1, op2: Double;
    code: Integer;
    s: string;
begin
 if mode = 2 then
 begin
  Val(strBuff1, op1, code);    // StringBuffer1 in Zahl verwandeln
  Val(strBuff2, op2, code);    // StringBuffer2 in Zahl verwandeln
  case op of                   // Operation durchführen
   '+': res:= op1 + op2;
   '-': res := op1 - op2;
   '*': res := op1 * op2;
   '/': res := op1 / op2
  end;
  s:= Format('%g',[res]);     // Ergebnis formatieren
  Label1.Caption := s;        // ... und anzeigen
  mode := 1;
  strBuff1 := ''
 end
end;

procedure TForm1.Button18Click(Sender: TObject); // Rechner ausschalten
begin
 Close
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
 Application.HelpFile := 'Taschenrechner.hlp'
end;

procedure TForm1.Button19Click(Sender: TObject);
begin
 Application.HelpJump('Inhalt')
end;

procedure TForm1.Hilfe2Click(Sender: TObject);
begin
 Application.HelpJump('Inhalt')
end;

end.

safak67 2. Jun 2009 20:59

Re: Taschenrechner
 
Hi egon,

danke für die Hilfe.. hast du auch das zum runterladen, damit ich mir auch die schaltflächen anschauen kann wie sie aufgebaut sind.. von mir aus auch nur ein foto von der main


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:15 Uhr.
Seite 1 von 3  1 23      

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