|
Registriert seit: 29. Aug 2009 Ort: Duisburg 437 Beiträge Delphi 2007 Professional |
#1
Hallo,
ich soll für die Schule einen Taschenrechner mit Delphi 5 erstellen. Ich hab ihn jetzt so angeordnet, dass es die Buttons gibt: Name: Caption: Button1 1 Button2 2 ... Button0 0 Plus + ... Gleich = Komma , CE CE ___________ Darüber ist ein Editfeld: Rechenfeld.text Es ist für ReadOnly eingestellt, sodass man die Zahlen über die Software "Tastatur" eingeben muss. Variablen: rRechnen1, rRechnen2 : string; RZeichen : real; Beim Start werden rRechnen1 und rRechnen2 auf := ('') gesetzt. procedure TForm1.Button1Click(Sender: TObject); begin rRechnen1:=rRechnen1 + '1'; Rechenfeld.Text:=rRechnen1; end; Das geht dann bis 9 bzw. 0 so weiter und auch das Komma funktioniert: procedure TForm1.KommaClick(Sender: TObject); begin rRechnen1:=rRechnen1 + ','; Rechenfeld.Text:=rRechnen1; end; So bekomme ich dann eine schöne Zeichenkette, also einen String. Jetzt möchte ich, dass beim Klicken auf "+" erst überprüft wird, ob die Variable rZeichen auf 1/2/3 oder 4 ist (Sie wird beim Start auf 0 gesetzt) Eins heißt + Rechnen Zwei heißt - Rechnen usw. procedure TForm1.PlusClick(Sender: TObject); begin if rZeichen = 1 then rRechnen2:=FloatToStr(round(StrToFloat(rRechnen1)) +round(StrToFloat(rRechnen2))); ________ Einschub: So sollen die Zeichenketten umgerechnet werden und verarbeitet werden. ________ if rZeichen = 2 then rRechnen2:=FloatToStr(round(StrToFloat(rRechnen1))-round(StrToFloat(rRechnen2))); if rZeichen = 3 then rRechnen2:=FloatToStr(round(StrToFloat(rRechnen1)) *round(StrToFloat(rRechnen2))); if rZeichen = 4 then rRechnen2:=FloatToStr(round(StrToFloat(rRechnen1))/round(StrToFloat(rRechnen2))); rRechnen2:=rRechnen1; rRechnen1:=(''); ________ Einschub: Für die nächste Eingabe wird die RechenZahl wieder auf ('') gesetzt. ________ rZeichen:=1; ________ Einschub: Da die Zahl jetzt auf 1 gesetzt wird, wird beim Klick auf die nächste Rechenschaltfläche rRechnen1+rRechnen2 gerechnet. ________ Rechenfeld.Text:=rRechnen1; Zwischenergebnis.Caption:=rRechnen2; end; So ist das auch mit - , * und / Wenn ich jetzt also starte, dann kommt der Rechner und ich kann durchs Klicken eine Zahl eingeben, bsp. 123 Dann klicke ich auf "+" Dann kommt die Meldung: Im Projekt Taschenrechner ist eine Exception der Klasse EConvertError aufgetreten.Meldung: ''' ist kein gültiger Gleitkommawert'. Prozess wurde angehalten. Wenn ich dann auf OK klicke, wird die letzte Zeile vom PlusButton Blau: Zwischenergebnis.Caption:=rRechnen2; Ich weiß nicht, was ich hier falsch mache... Zum Schluss noch mein gesamter Quelltext:
Delphi-Quellcode:
unit Rechner;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Rechenfeld: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Button7: TButton; Button8: TButton; Button9: TButton; Gleich: TButton; Button0: TButton; Komma: TButton; Plus: TButton; Minus: TButton; Mal: TButton; Geteilt: TButton; Button10: TButton; Zwischenergebnis: TLabel; Label1: TLabel; procedure Button10Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Button9Click(Sender: TObject); procedure Button0Click(Sender: TObject); procedure KommaClick(Sender: TObject); procedure PlusClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure RechenfeldChange(Sender: TObject); procedure MinusClick(Sender: TObject); procedure MalClick(Sender: TObject); procedure GeteiltClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; rRechnen1 : String; rRechnen2 : String; rZeichen : real; implementation {$R *.DFM} procedure TForm1.Button10Click(Sender: TObject); begin rRechnen1:= (''); rRechnen2:= (''); Zwischenergebnis.Caption:=('0'); Rechenfeld.text:=RrECHNEN1; end; procedure TForm1.Button1Click(Sender: TObject); begin rRechnen1:=rRechnen1 + '1'; Rechenfeld.Text:=rRechnen1; end; procedure TForm1.Button2Click(Sender: TObject); begin rRechnen1:=rRechnen1 + '2'; Rechenfeld.Text:=rRechnen1; end; procedure TForm1.Button3Click(Sender: TObject); begin rRechnen1:=rRechnen1 + '3'; Rechenfeld.Text:=rRechnen1; end; procedure TForm1.Button4Click(Sender: TObject); begin rRechnen1:=rRechnen1 + '4'; Rechenfeld.Text:=rRechnen1; end; procedure TForm1.Button5Click(Sender: TObject); begin rRechnen1:=rRechnen1 + '5'; Rechenfeld.Text:=rRechnen1; end; procedure TForm1.Button6Click(Sender: TObject); begin rRechnen1:=rRechnen1 + '6'; Rechenfeld.Text:=rRechnen1; end; procedure TForm1.Button7Click(Sender: TObject); begin rRechnen1:=rRechnen1 + '7'; Rechenfeld.Text:=rRechnen1; end; procedure TForm1.Button8Click(Sender: TObject); begin rRechnen1:=rRechnen1 + '8'; Rechenfeld.Text:=rRechnen1; end; procedure TForm1.Button9Click(Sender: TObject); begin rRechnen1:=rRechnen1 + '9'; Rechenfeld.Text:=rRechnen1; end; procedure TForm1.Button0Click(Sender: TObject); begin rRechnen1:=rRechnen1 + '0'; Rechenfeld.Text:=rRechnen1; end; procedure TForm1.KommaClick(Sender: TObject); begin rRechnen1:=rRechnen1 + ','; Rechenfeld.Text:=rRechnen1; end; procedure TForm1.PlusClick(Sender: TObject); begin if rZeichen = 1 then rRechnen2:=FloatToStr(round(StrToFloat(rRechnen1))+round(StrToFloat(rRechnen2))); if rZeichen = 2 then rRechnen2:=FloatToStr(round(StrToFloat(rRechnen1))-round(StrToFloat(rRechnen2))); if rZeichen = 3 then rRechnen2:=FloatToStr(round(StrToFloat(rRechnen1))*round(StrToFloat(rRechnen2))); if rZeichen = 4 then rRechnen2:=FloatToStr(round(StrToFloat(rRechnen1))/round(StrToFloat(rRechnen2))); rRechnen2:=rRechnen1; rRechnen1:=(''); rZeichen:=1; Rechenfeld.Text:=rRechnen1; Zwischenergebnis.Caption:=(rRechnen2); end; procedure TForm1.FormCreate(Sender: TObject); begin rZeichen:=1; rRechnen2:=('2'); end; procedure TForm1.RechenfeldChange(Sender: TObject); begin try rRechnen1:=FloatToStr(round(StrToFloat(Rechenfeld.text))); except ; end; end; procedure TForm1.MinusClick(Sender: TObject); begin if rZeichen = 1 then rRechnen2:=FloatToStr(round(StrToFloat(rRechnen1))+round(StrToFloat(rRechnen2))); if rZeichen = 2 then rRechnen2:=FloatToStr(round(StrToFloat(rRechnen1))-round(StrToFloat(rRechnen2))); if rZeichen = 3 then rRechnen2:=FloatToStr(round(StrToFloat(rRechnen1))*round(StrToFloat(rRechnen2))); if rZeichen = 4 then rRechnen2:=FloatToStr(round(StrToFloat(rRechnen1))/round(StrToFloat(rRechnen2))); rRechnen2:=rRechnen1; rRechnen1:=(''); rZeichen:=2; Rechenfeld.Text:=rRechnen1; Zwischenergebnis.Caption:=(rRechnen2); end; procedure TForm1.MalClick(Sender: TObject); begin if rZeichen = 1 then rRechnen2:=FloatToStr(round(StrToFloat(rRechnen1))+round(StrToFloat(rRechnen2))); if rZeichen = 2 then rRechnen2:=FloatToStr(round(StrToFloat(rRechnen1))-round(StrToFloat(rRechnen2))); if rZeichen = 3 then rRechnen2:=FloatToStr(round(StrToFloat(rRechnen1))*round(StrToFloat(rRechnen2))); if rZeichen = 4 then rRechnen2:=FloatToStr(round(StrToFloat(rRechnen1))/round(StrToFloat(rRechnen2))); rRechnen2:=rRechnen1; rRechnen1:=(''); rZeichen:=3; Rechenfeld.Text:=rRechnen1; Zwischenergebnis.Caption:=(rRechnen2); end; procedure TForm1.GeteiltClick(Sender: TObject); begin if rZeichen = 1 then rRechnen2:=FloatToStr(round(StrToFloat(rRechnen1))+round(StrToFloat(rRechnen2))); if rZeichen = 2 then rRechnen2:=FloatToStr(round(StrToFloat(rRechnen1))-round(StrToFloat(rRechnen2))); if rZeichen = 3 then rRechnen2:=FloatToStr(round(StrToFloat(rRechnen1))*round(StrToFloat(rRechnen2))); if rZeichen = 4 then rRechnen2:=FloatToStr(round(StrToFloat(rRechnen1))/round(StrToFloat(rRechnen2))); rRechnen2:=rRechnen1; rRechnen1:=(''); rZeichen:=4; Rechenfeld.Text:=rRechnen1; Zwischenergebnis.Caption:=(rRechnen2); end; end. |
![]() |
Ansicht |
![]() |
![]() |
![]() |
ForumregelnEs 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
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
![]() |
![]() |