Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Taschenrechner (https://www.delphipraxis.net/136821-taschenrechner.html)

Zeb22 8. Jul 2009 15:08


Taschenrechner
 
Ich möchte ein Taschenrechner mit Delphi aufbauen und hab da ein paar Probleme.

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Edit1: TEdit;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    procedure BtnAlleClick(Sender: TObject);
    procedure OpSpeicher(Sender: TObject);




  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  zeichen:char;
  operand:char;
  opspeicher:char;

  ergebnis:double;
  zkam:boolean;

  zahl:double;
  zeichenkette:string;




implementation

{$R *.dfm}


procedure TForm1.BtnAlleClick(Sender: TObject);
begin
 if sender = button1 then zeichen :='1';
 if sender = button2 then zeichen :='2';
 if sender = button3 then zeichen :='3';
 if sender = button4 then zeichen :='4';
 if sender = button5 then zeichen :='5';
 if sender = button6 then zeichen :='6';



 if zkam = true
  then
   begin
    zeichenkette := zeichen;
    zkam := false;
   end
   else
    zeichenkette := zeichenkette + zeichen;
    Edit1.Text := zeichenkette;
    zahl := StrToFloat(zeichenkette);
   end;


procedure TForm1.OpSpeicher(Sender: TObject);
begin
 if sender = button7 then operand :='+';
 if sender = button8 then operand :='-';
 if sender = button9 then operand :='=';

 zkam := true;

 if opspeicher = '0' then ergebnis := zahl;
 if opspeicher = '+' then ergebnis := ergebnis + zahl;
 if opspeicher = '-' then ergebnis := ergebnis - zahl;

 Edit1.Text := FloatToStr(ergebnis);
 opspeicher := operand;


end;

end.

Bei
Delphi-Quellcode:
if opspeicher = '0' then ergebnis := zahl;
if opspeicher = '+' then ergebnis := ergebnis + zahl;
if opspeicher = '-' then ergebnis := ergebnis - zahl;
zeigt er mir an, es wären zu wenige parameter. Aber in den Unterlagen der Schule ist der text genau so.. ich brauch impulse von euch :pale:

Stormy 8. Jul 2009 15:31

Re: Taschenrechner
 
Guck dir mal das Beispiel hier an oder suche mal im Forum nach Taschenrechner da wirst du einiges dazu finden. Warum das Rad neu erfinden? :)


Gruß
Stormy

angos 8. Jul 2009 15:37

Re: Taschenrechner
 
@ Stormy: neuerfinden zum lernen ;)

@Topic: Dein Problem ist, dass du OpSpeicher einmal als Funktion deklariert hast und zum anderen als Variable. benenn eines von beiden um :)
[EDIT] Er versucht an der Entsprechenden Stelle die Funktion aufzurufen und die erwartet halt den Parameter Sender
Delphi-Quellcode:
procedure TForm1.OpSpeicher(Sender: TObject);
Alternativ müsstest du auch mit den von dir benutzten Werten arbeiten können, wenn du direkt auf Unit1 zugreifst, wobei ich davon abrate, da du mit doppelten Bezeichnern sehr schnell die übersicht verlierst!:
Delphi-Quellcode:
procedure TForm1.OpSpeicher(Sender: TObject);
begin
if sender = button7 then operand :='+';
if sender = button8 then operand :='-';
if sender = button9 then operand :='=';

zkam := true;

if Unit1.opspeicher = '0' then ergebnis := zahl; // <----
if Unit1.opspeicher = '+' then ergebnis := ergebnis + zahl; // <----
if Unit1.opspeicher = '-' then ergebnis := ergebnis - zahl; // <----

Edit1.Text := FloatToStr(ergebnis);
Unit1.opspeicher := operand; // <----


end;
Gruß
Ansgar

Zeb22 8. Jul 2009 16:16

Re: Taschenrechner
 
Boah du bist echt cool angos. Vielen Dank für deine Hilfe, ich habe echt lange nach einer Lösung gesucht und jetzt ist das alles auf einmal so klar :D

Aber irgendwie habe ich da noch Probleme. Wenn ich z.b auf den = Button bei mir drücke, sollte er ja im Grunde 2 zahlen z.b adieren. Hab ich eben aus probiert. 1+5 = 0..

Da hackt noch etwas...

DP-Maintenance 8. Jul 2009 17:29

DP-Maintenance
 
Dieses Thema wurde von "Phoenix" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Geht definitiv um Delphi

angos 9. Jul 2009 11:52

Re: Taschenrechner
 
Hmm,

dann weisst du ja schon dass da ein Fehler ist. Also debugge einfach und schau, ob die Zahlen korrekt gefüllt werden und ob diese beim Klick auf das "=" auch noch verfügbar sind.


Gruß
Ansgar


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:52 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