Entwickler-Ecke

Sonstiges (Delphi) - Rechner


LinzerASK - So 19.06.05 11:50
Titel: Rechner
hallo!

ich versuche einen windows ähnlichen rechenr zu programmieren! :-)

ich schaffe auch einen mit zwei spinedit feldern,....

aber ich möchte das so:

das man auf einen button mit zahlen von 0-9 klickt, und das ergebnis dann in einem edit feld ausgegeben wird!

ich hoffe ihr könnt mir den nötigen ratschlag geben wie das funktioniert!


CABALxx - So 19.06.05 13:12

was genau möchtest du?

wenn ich das jetzt richtig interpretiere dann versuchst du, einen taschenrechner zu programmieren der in etwa so ist wie der von windoof????



Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text := Edit1.Text + '1';
end;

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

..... usw usw


dann kannste buttons 0 -9 machen und wenn du dann 1 klickst wird die zahl 1 dem edit feld hinzugefügt...

meintest du sowas?


Keldorn - So 19.06.05 13:16

Keldorn hat folgendes geschrieben:
Allen Zahlen-Buttons die gleiche onclick-routine zuweisen.

eineonclickroutine erstellen und allen butons per OI diese onclickmethode zuweisen.

Mfg Frank

edit: aus Versehen auf edit gekommen :oops:


BenBE - So 19.06.05 13:51

Sieht dann so hier aus:

Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.ButtonClick(Sender: TObject);
begin
    Edit1.Text := Edit1.Text + IntToStr(TComponent(Sender).Tag);
end;


//Edit: procedure im Source ergänzt ;-)


CABALxx - So 19.06.05 13:56

sry bin kein profi wie ihr :wink:

für mich is die einfachste lösung die naheliegendste


LinzerASK - So 19.06.05 17:47
Titel: ????????

Delphi-Quelltext
1:
Edit1.Text := Edit1.Text + IntToStr(TComponent(Sender).Tag);                    


bei diesem code steht dann immer "null" im edit-feld!


Delphi-Quelltext
1:
Edit1.Text := Edit1.Text +'1';                    



bei diesen, wie soll man dann die rechenoperationen durchführen!?

Moderiert von user profile iconChristian S.: Code- durch Delphi-Tags ersetzt.


LinzerASK - So 19.06.05 18:06

a jo ,...

eine frage noch zum
Edit1.Text := Edit1.Text + '1'

da wird ja die zahl lediglich raufgeschrieben ins edit-feld,...!
mehr nicht!
und wenn ich das selbe dann mit:

Edit1.Text := Edit1.Text + '+' für ein rechenzeichen einfüge dann steht zwar ein plus oben im edit-feld,...! *lol*

und wie kann man das dann ausrechnen lassen!? :-)


Keldorn - So 19.06.05 20:03
Titel: Re: ????????
user profile iconLinzerASK hat folgendes geschrieben:

Quelltext
1:
Edit1.Text := Edit1.Text + IntToStr(TComponent(Sender).Tag);                    


bei diesem code steht dann immer "null" im edit-feld!


wir gehen natürlich davon aus, das du die Tag-Eigenschften der Buttons auch entprechend setzt. ;)

Zitat:

Edit1.Text := Edit1.Text + '+' für ein rechenzeichen einfüge dann steht zwar ein plus oben im edit-feld,...! *lol*

und wie kann man das dann ausrechnen lassen!?

such nach Suche in: Delphi-Forum, Delphi-Library PARSER


LinzerASK - So 19.06.05 20:06

na gut und wie macht man das bei

+
-
*
/

?!!?!??!

und bei "="


ich verstehe das nicht mi dem "parsen"


Tilo - Mo 20.06.05 14:15

zerlegen der gleichung.
z.b'11+56=' bedeutet: 1.Term ist 11, Rechnenzeichen '+' -> 2. Term (56) zum ersten hinzuaddieren. so in etwa nur wesentlich ausführlicher.


LinzerASK - Mo 20.06.05 14:42

@ tilo! danke für den tipp! nur soll ich das dann in strings zerlegen oder wie?!

ich bräuchte da ein kleines beispiel für ein rechenzeichen oder was weiß ich!


Kroni - Mo 20.06.05 14:43

Er ist doch noch Anfänger, dann lasst doch das Parsen weg ;-)
Einfach wie oben die Eingabe...dann nen Rechenzeichen.....Edit auf null setzen
zweite Zahl eingeben....erzwingen, dass man nur = Klicken kann, und dann das Ergebnis berechnen.....
und so fort.....nur dass dann eben anch dem Klick auf = das Ergebnis= 1. Zahl ist....
So kann man sich das Parsen sparen!
Nur kann man dann eben immer nur zwei Zahlen berechnen, so wie es der Windows Rechner auch kann!


LinzerASK - Mo 20.06.05 15:03
Titel: mah i gibs auf
und wie schreibt man dass!

bitte!,...!


Kroni - Mo 20.06.05 15:09

Ist das ne Hausaufgabe??

Nun ja....
ich poste ungern den kompletten Source
mach dir doch erstmal Gedanken darum, wie du die Eingabe machst.....dazu hast du ja shcon genug anregung....
und dann musst du nen Rechenzeichen drücken....abspeichern, welches das war.....
die Zahl, die im Edit feld steht speichern....
die Zweite Zahl eingeben.....alle rechenzeichen sperren .....damit du auch nur das = Drücken kannst...
und dann das ERgebnis berechnen
das Ergebnis dann wieder Speichern...dazu bringen, dass nur ein Rechenzeichen gedrückt werden kann....
nachdem das gedrückt worden ist, dafür sorgen, dass die Zweite Zahl eingeben wird, und dann, dass wieder dsa = gedürckt werden muss usw.....


LinzerASK - Mo 20.06.05 15:12
Titel: danke!
!danke jetzt ist es mir klar geworden!,.....

danke! ne es ist kein hausübung!


Kroni - Mo 20.06.05 15:15

Jo, versuch das mal zu realisieren.
Wenn du dabei Probelme hast, dann solltest du dich hier melden.
Vlt. auch mal mit Codeschnipseln, damit man sieht, dass du dir gedanken machst.


LinzerASK - Fr 24.06.05 14:49
Titel: ich komme nicht weiter
was muss ich jetzt machen!?



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:
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:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
    Button14: TButton;
    Button15: TButton;
    Button16: TButton;
    Datei: TMainMenu;
    Datei1: TMenuItem;
    Hilfe1: TMenuItem;
    Beenden1: TMenuItem;
    Hilfe2: TMenuItem;
    Infos1: TMenuItem;
    Edit1: TEdit;
    Button17: TButton;
    procedure Beenden1Click(Sender: TObject);
    procedure Infos1Click(Sender: TObject);
    procedure Hilfe2Click(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 Button10Click(Sender: TObject);
    procedure Button16Click(Sender: TObject);
    procedure Button12Click(Sender: TObject);

    procedure Button15Click(Sender: TObject);
  private
    { Private-Deklarationen }

  public
    { Public-Deklarationen }
  end;

var
s:string;
z1:integer;
z2:integer;
erg:integer;
p:integer;
o:string;
l:strinG;
//z1:integer;
  Form1: TForm1;

implementation

uses Unit2, Unit3;

{$R *.DFM}

{$R WinXPStyle.res}

procedure TForm1.Beenden1Click(Sender: TObject);
begin

close;
end;

procedure TForm1.Infos1Click(Sender: TObject);
begin
form3.show;
end;

procedure TForm1.Hilfe2Click(Sender: TObject);
begin
form2.show;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text := Edit1.Text + IntToStr(TComponent(Sender).Tag);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Edit1.Text := Edit1.Text + IntToStr(TComponent(Sender).Tag);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Edit1.Text := Edit1.Text + IntToStr(TComponent(Sender).Tag);
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
Edit1.Text := Edit1.Text + IntToStr(TComponent(Sender).Tag);
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
Edit1.Text := Edit1.Text + IntToStr(TComponent(Sender).Tag);
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
Edit1.Text := Edit1.Text + IntToStr(TComponent(Sender).Tag);
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
Edit1.Text := Edit1.Text + IntToStr(TComponent(Sender).Tag);
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
Edit1.Text := Edit1.Text + IntToStr(TComponent(Sender).Tag);
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
Edit1.Text := Edit1.Text + IntToStr(TComponent(Sender).Tag);
end;

procedure TForm1.Button10Click(Sender: TObject);
begin
Edit1.Text := Edit1.Text + IntToStr(TComponent(Sender).Tag);
end;

procedure TForm1.Button16Click(Sender: TObject);
begin
edit1.clear;
end;

procedure TForm1.Button12Click(Sender: TObject);
begin
Edit1.Text := Edit1.Text + button12.caption;
if edit1.text='++' then showmessage('Nur ein Plus!');
end;

procedure TForm1.Button15Click(Sender: TObject);
var z1,z2:integer;
rz:string;
erg:integer;


begin
z1:=strtoint(edit1.text);
edit1.clear;

if edit1.text='+' then rz:='+';
if edit1.text='*' then rz:='-';
if edit1.text='/' then rz:='/';
if edit1.text='/' then rz:='*';

z2:=strtoint(edit1.text);
edit1.clear;

if rz='+' then erg:=z1+z2;
if rz='-' then erg:=z1-z2;
if rz='*' then erg:=z1*z2;
if rz='/' then erg:=z1*z2;

edit1.text:=inttostr(erg);


end;

end.


Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt.


Keldorn - Fr 24.06.05 19:11
Titel: Re: ich komme nicht weiter
Keldorn hat folgendes geschrieben:
Allen Zahlen-Buttons die gleiche onclick-routine zuweisen.

eineonclickroutine erstellen und allen butons per OI diese onclickmethode zuweisen.

Mfg Frank


LH_Freak - Fr 24.06.05 19:58

bei den Jedikomponenten ist eine Kompo zum Parsen dabei (:arrow: JvInterpreterProgram) dann ist das ganze relativ einfach ;)


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text := Edit1.Text + (Sender as TButton).Caption;
end;

procedure TForm1.Button15Click(Sender: TObject);
begin
JvInterpreterProgram1.Pas.Add(Edit1.Text);
JvInterpreterProgram1.Run;
Edit1.Text := JvInterpreterProgram1.VResult
end;


Ok????

EDIT:
Den einzelnen Buttons (bis auf = ) musst du bei onClick Button1Click zuweisen