![]() |
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:
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:
if opspeicher = '0' then ergebnis := zahl;
if opspeicher = '+' then ergebnis := ergebnis + zahl; if opspeicher = '-' then ergebnis := ergebnis - zahl; |
Re: Taschenrechner
Guck dir mal das Beispiel
![]() Gruß Stormy |
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:
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!:
procedure TForm1.OpSpeicher(Sender: TObject);
Delphi-Quellcode:
Gruß
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; Ansgar |
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
Dieses Thema wurde von "Phoenix" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Geht definitiv um Delphi |
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 08:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz