Autor Beitrag
GericasS
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 540

Windows Vista Home Premium
D2010, VisualStudio2008
BeitragVerfasst: Mo 03.09.07 08:11 
Morgen Jungs,

ich habe dieses Taschenrechner beispiel jetzt schon öfters druchgearbeitet, aber was mich noch stört, sind diese zwei edit Felder. Ich möchte das auf eins dezimieren. Ich hab mir schon gedanken gemacht, das die erste die Zahl die man eingibt sich i.wie zwischenspeichern muss um auf die zweite oder sogar dritte... zu warten. Jetzt meine Frage an euch wie sieht das Code mäßig aus ?..

mein Sourcecode ist der Rechner von Christian S.

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Button1Click(Sender: TObject);
var zahl1, zahl2, summe : Integer;
begin
  zahl1 := StrToInt(edit1.text);
  zahl2 := StrToInt(edit2.text);
  summe := zahl1+zahl2;
  label1.caption := IntToStr(summe);
end.........


der rest ist glaub ich bekannt ( hoffe ich =) )

GericasS
TheAxeEffect
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 37



BeitragVerfasst: Mo 03.09.07 09:50 
ich geb dir mal nen denkansatz:
für ddas zwischenspeichern nimmst du EINE variable. wenn du zb. die rechung 2+7 hast, ist deine variable anfangs zwei, dann wird sieben dazugezählt. hast du die rechnung 2+7+4 ist sie anfangs 2, dann wird sieben dazugezählt, und dann 4. nach jedem rechenvorgang wird der wert dieser variable wieder in edit1 ausgegeben.

hier mal nen code:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
var
  Form1: TForm1;
   temp:integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin

temp:=temp+strtoint(edit1.text);
edit1.text:=inttostr(temp);

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
temp:=0;
end;

procedure TForm1.Edit1Click(Sender: TObject);
begin
edit1.text:='';
end;
jackle32
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 183
Erhaltene Danke: 7

Win7
Delphi XE5 Starter, RAD Studio XE7 Pro
BeitragVerfasst: Mo 03.09.07 10:09 
Also ich würde sagen, dass es in der Form wie du sie verwendest schwierig wird es auf ein Edit Feld zu beschränken. Wenn du die Rechnung 2+7+4 in ein Edit Feld eingeben willst müsstest du ja eine Routine drüber laufen lassen, die dir immer am Plus-Zeichen die Eingabe ausliest und sich die Zahlen merkt.

Ich hab mir auch schon einmal einen Rechner geschrieben, aber mit anderem Ansatz. Bei mir sieht die Oberfläche sehr ähnlich dem Windowseigenen Rechner aus. Ich habe also einen Button für die ganzen Grundrechenzeichen und für die Zahlen und natürlich für das Ergebnis. Jetzt hab ich das so gelöst, dass immer beim klicken auf ein Rechenzeichen die Zahl im Edit-Feld in eine Variable gespeichert wird. Und er sich das gewählte Zeichen merkt. Wenn ich dann auf '=' drücke wird die Zahl im Edit-Feld in eine zweite Variable geschrieben. Die beiden Zahlen werden dann in einer Prozedur mit dem gewünschten Zeichen dazwischen verrechnet und das Ergebnis ins Edit-Feld wieder ausgegeben. Wenn ich jetzt dann zum Ergebnis noch eine Zahl addieren will drück ich wieder einfach auf meinen Plus-Button und das Ergebnis steht jetzt in Variable eins und ich kann ein Zahl dazu addieren.
Man kann das dann auch noch erweitern, dass er auch beim Klick auf ein Zeichen und wenn beide Variablen belegt sind, das Ergebnis ausgibt.

Bin mit diesem Ansatz eigentlich mit einfachen Mitteln recht weit gekommen. Hoffe ich konnte helfen

Gruß Jack
TheAxeEffect
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 37



BeitragVerfasst: Mo 03.09.07 10:17 
ich weiß, aber ich meins jetzt nur fürs addieren. wenn du alles haben willst, is dein ansatz schon brauchbarer.
jackle32
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 183
Erhaltene Danke: 7

Win7
Delphi XE5 Starter, RAD Studio XE7 Pro
BeitragVerfasst: Mo 03.09.07 10:28 
Wir sind uns zumindest einig und die Kernaussage ist die Gleiche. Das Editfeld auch als "Variable" benutzen und so aufaddieren. Ist in meinem Fall auch nicht anders gelöst.

Muss dir recht geben für den nur Plus-Fall ist deine Lösung wesentlich einfacher!

Gruß Jack
GericasS Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 540

Windows Vista Home Premium
D2010, VisualStudio2008
BeitragVerfasst: Mo 03.09.07 10:30 
Hi ihr zwei,

ich kann von dieser Vorgabe auch abweichen, das ist kein Problem !
hab jetzt mal so angefangen...

ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text := Edit1.Text +'1';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Edit1.Text := Edit1.Text +'2';
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
edit1.Text := edit1.Text +'3' ;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
edit1.Text := edit1.Text +'4' ;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
edit1.text := edit1.Text +'5' ;
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
edit1.text := edit1.text +'6' ;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
edit1.Text := edit1.Text +'7' ;
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
edit1.Text := edit1.Text +'8' ;
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
edit1.Text := edit1.Text +'9' ;
end;

procedure TForm1.Button14Click(Sender: TObject);
begin
edit1.Text := edit1.Text +'0' ;
end;

procedure TForm1.Button15Click(Sender: TObject);
begin
edit1.Clear ;
end;


Ich würde das auch sehr gerne so machen, das sich die erste zahl in einer Variable speichert und wenn man auf '+' drückt sich die nächte eingeben lässt und am ende bei
'=' beide zusammenrechnen.

@jackl32 : Könntest du deinen Code bitte mal posten, wie man die erste variable dann zwischenspeichern kann und danach wieder reinladen zu können ? :D
jackle32
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 183
Erhaltene Danke: 7

Win7
Delphi XE5 Starter, RAD Studio XE7 Pro
BeitragVerfasst: Mo 03.09.07 11:28 
Dein Ansatz funktioniert schon aber is tierisch schreib aufwendig. Ich hab das so gelöst, dass alle OnClick Events der ganzen Zahlen Button auf eine Prozedur zugreifen. Vorher hab ich in jeweiligen Button unter Tag den Wert des Buttons hinterlegt. Wenn ich jetzt auf einen Button klicke wird die zentrale Prozedur aufgerufen und ich kann über

ausblenden Delphi-Quelltext
1:
(Sender as Button).Tag					


auf den Wert zugreifen. Genauso kannst du es auch mit den Zeichen machen, in dem du denen z.b. Zahlen größer 10 gibst, hat den Vorteil du fragst nur zahlen ab Performans Vorteile).

Mein Programm ist mittlerweile aber schon sehr weit fortgeschritten und enthält viele zusätzliche Sachen, die für die anfachen gebrauch nicht nötig sind (wie z.B. die eingabe der zahlen und rechenzeichen über das Nummernfeld auf der Tastatur). Daher stell ich ungern den ganzen Code hier online.

Hier mal die zentralen Punkte an Hand von denen du dich eigentlich durchhangeln können solltest.

- eine zentrale Prozedure mit denen du die Zahlen einliest
- eine Prozedure für die Zeichen, in der du aber auch gleich die Zahl aus dem Editfeld in die erste Variable speicherst
- jetzt musst du dir natürlich merken, dass die zahl gespeichert ist und beim nächsten tastendruck das edit-feld erst gelöscht werden soll (oder du löscht es beim Zeichtasten drücken).
-eine Prozedur, für das Verrechnen der beiden Zahlen, es empfiehlt sich hier eine case anwendung in der du das gemerkte Zeichen abfrägst, und das Ergebnis in das Edit-Fenster schreibst.

Jetzt haste eigentlich die grundsachen schon, wenn du jetzt nach der ersten Berechnung gleich wieder auf ein Zeichen klickst, wird ja wieder der aktuell angezeigte Wert auf Variable eins geschrienben und kann gleich wieder verrechnet werden.

Hoffe dir hilft das, wenn nicht noch bescheid sagen, dann schick ich dir meine Code mal per pn

Gruß Jack
jackle32
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 183
Erhaltene Danke: 7

Win7
Delphi XE5 Starter, RAD Studio XE7 Pro
BeitragVerfasst: Di 04.09.07 08:57 
Und wie siehts aus? Kommste jetzt zurecht?

Gruß Jack
GericasS Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 540

Windows Vista Home Premium
D2010, VisualStudio2008
BeitragVerfasst: Di 04.09.07 09:02 
Ich hatte gestern keine Zeit mehr es zu versuchen, werde heute mal schauen ob ich das an eurem Beispielt schaffe, wenns nicht klappt dann such ich mir was andres.


Trozdem vielen Dank an alle die hier gepostet haben !

:D

GericasS