Autor Beitrag
Hazel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Do 12.04.12 09:32 
Hallo :)

bin ganz neu hier und hab mal eine Frage:

Ich hab einen Taschenrechner programmiert dieser funktioniert auch. Wollte ihn jetzt erweitern um die Funktion x^y. Hab gelesen das dies mit Power Math möglich wäre? Kann mir da jemand vill helfen?
Schon mal Danke im vorraus :)

Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Do 12.04.12 09:46 
:welcome:
Genau, in der Unit "Math" gibt es die Funktion "Power". Wo ist denn konkret Dein Problem?

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
Hazel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Do 12.04.12 09:58 
Hey
danke erstmal :)
also ich verstehe nicht ganz wie ich das machen muss^^
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 480

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Do 12.04.12 10:02 
Du musst die Unit math benutzen, d.h. oben in die "uses-Liste" musst du math hinzufügen. Dann kannst du die Funktionen dieser Unit benutzen, z.B. power

_________________
We are, we were and will not be.
Hazel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Do 12.04.12 10:23 
Danke :*
hab jetzt noch einen Fehler drinnen -.-
weis nicht ganz wieso es nicht funktioniert:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.HochyClick(Sender: TObject);
begin
if x <> 0 then
begin
  x:= StrToFloat(Edit1.Text);
  x:= power(x, Zwischenegebnis);
  Edit1.Text:= FloatToStr(x);
  Zahl:= Edit1.Text;
end;
end;

vill kann mir einer von euch sagen wo der Fehler liegt?

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Do 12.04.12 10:26 
Dazu müsstest Du uns bitte die Fehlermeldung sagen, die Du bekommst.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
Hazel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Do 12.04.12 10:27 
Gibt keine Fehlermeldung aus es funktioniert nur nicht^^
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Do 12.04.12 10:47 
was stellt denn dieses dar?

ausblenden Delphi-Quelltext
1:
2:
3:
if x <> 0 then 
begin 
x:= StrToFloat(Edit1.Text);

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Hazel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Do 12.04.12 10:51 
soll ja ein Taschenrechner werden. Und mit Null soll der nicht rechnen deswegen if x <> 0
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Do 12.04.12 10:53 
ja und was steht vor der Zuweisung x:= StrToFloat(Edit1.Text); in x ???

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Hazel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Do 12.04.12 10:57 
ich versteh deine Frage nicht ganz^^
sorry bin noch anfänger
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Do 12.04.12 11:27 
Ich glaub, Du musst mal etwas mehr Quellcode "drumrum" posten. Und bitte genauer schreiben, was Du unter "Funktioniert nicht" verstehst. Wir ein falsches Ergebnis ausgegeben, wird gar nichts ausgegeben, etc...

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
Hazel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Do 12.04.12 11:40 
ausblenden volle Höhe 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:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
unit Taschenrechner;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Zahl1: TSpeedButton;
    Zahl2: TSpeedButton;
    Zahl3: TSpeedButton;
    Zahl4: TSpeedButton;
    Zahl5: TSpeedButton;
    Zahl6: TSpeedButton;
    Zahl7: TSpeedButton;
    Zahl8: TSpeedButton;
    Zahl9: TSpeedButton;
    Zahl0: TSpeedButton;
    Komma: TSpeedButton;
    IstGleich: TSpeedButton;
    Geteilt: TSpeedButton;
    Mal: TSpeedButton;
    Minus: TSpeedButton;
    Plus: TSpeedButton;
    Löschen: TSpeedButton;
    Neu: TSpeedButton;
    Ende: TSpeedButton;
    Vorzeichen: TSpeedButton;
    Bruch: TSpeedButton;
    Prozent: TSpeedButton;
    Wurzel: TSpeedButton;
    Quadrat: TSpeedButton;
    Hochy: TSpeedButton;
    procedure Zahl1Click(Sender: TObject);
    procedure Zahl2Click(Sender: TObject);
    procedure Zahl3Click(Sender: TObject);
    procedure Zahl4Click(Sender: TObject);
    procedure Zahl5Click(Sender: TObject);
    procedure Zahl6Click(Sender: TObject);
    procedure Zahl7Click(Sender: TObject);
    procedure Zahl8Click(Sender: TObject);
    procedure Zahl9Click(Sender: TObject);
    procedure Zahl0Click(Sender: TObject);
    procedure KommaClick(Sender: TObject);
    procedure IstGleichClick(Sender: TObject);
    procedure PlusClick(Sender: TObject);
    procedure NeuClick(Sender: TObject);
    procedure MinusClick(Sender: TObject);
    procedure MalClick(Sender: TObject);
    procedure GeteiltClick(Sender: TObject);
    procedure VorzeichenClick(Sender: TObject);
    procedure LöschenClick(Sender: TObject);
    procedure EndeClick(Sender: TObject);
    procedure BruchClick(Sender: TObject);
    procedure ProzentClick(Sender: TObject);
    procedure WurzelClick(Sender: TObject);
    procedure key(Sender: TObject; var Key: Char);
    procedure QuadratClick(Sender: TObject);
    procedure HochyClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation
var Zahl: String;
x,Zwischenergebnis: real;
Operation: Integer;

{$R *.dfm}

procedure TForm1.BruchClick(Sender: TObject);
begin
if x <> 0 then
begin
  x:= StrToFloat(Edit1.Text);
  x:= 1/x;
  Edit1.Text:= FloatToStr(x);
  Zahl:= Edit1.Text;
end
else
ShowMessage('Von Null gibt es keinen Kerwert!');
end;

procedure TForm1.EndeClick(Sender: TObject);
begin
form1.Close;
end;

procedure TForm1.GeteiltClick(Sender: TObject);
begin
if Operation = 0 then Zwischenergebnis:= x;
if Operation = 4 then
 begin
   if x <> 0 then
   Zwischenergebnis:= Zwischenergebnis / x
   else ShowMessage('Division durch Null ist nicht möglich!');
 end;
  Edit1.Text:= '';
 x:=0;
 Operation:= 4;
end;

procedure TForm1.HochyClick(Sender: TObject);
begin
if x <> 0 then
begin
  x:= StrToFloat(Edit1.Text);
  x:= Power(x, Zwischenergebnis);
  Edit1.Text:= FloatToStr(x);
  Zahl:= Edit1.Text;
end;
end;

procedure TForm1.IstGleichClick(Sender: TObject);
begin
if Operation = 0 then Zwischenergebnis:= x;
if Operation = 1 then Zwischenergebnis:= Zwischenergebnis + x;
if Operation = 2 then Zwischenergebnis:= Zwischenergebnis - x;
if Operation = 3 then Zwischenergebnis:= Zwischenergebnis * x;
if Operation = 4 then
 begin
   if x <> 0 then
   Zwischenergebnis:= Zwischenergebnis / x
   else ShowMessage('Division durch Null ist nicht möglich!');
 end;
 Operation:= 0;
 x:= Zwischenergebnis;
 Edit1.Text:= FloatToStr(Zwischenergebnis);

end;

procedure TForm1.key(Sender: TObject; var Key: Char);
begin
begin
  if ord(key) = VK_RETURN then
  IstGleich.Click;
  if ord(key) = VK_BACK then
  Löschen.Click;
  if ord(key) = VK_ESCAPE then Ende.Click;
  if ord(key) = VK_SPACE then Neu.Click;
  
end;
case key of
  '1': Zahl1.click;
  '2': Zahl2.click;
  '3': Zahl3.click;
  '4': Zahl4.click;
  '5': Zahl5.click;
  '6': Zahl6.click;
  '7': Zahl7.click;
  '8': Zahl8.click;
  '9': Zahl9.click;
  '0': Zahl0.click;
  '+': Plus.click;
  '-': Minus.click;
  '/': Geteilt.click;
  '*': Mal.click;
  ',': Komma.click;
  '.': Komma.click;
end;
end;


procedure TForm1.KommaClick(Sender: TObject);
begin
if Pos(',',Edit1.Text)= 0 then
begin
Edit1.Text:= Edit1.Text + Komma.Caption;
Zahl:= Edit1.Text;
x:= StrToFloat(Zahl);
end;
end;

procedure TForm1.LöschenClick(Sender: TObject);
var i,j: Integer;
begin
j:= 0;
if Copy(Edit1.Text,1,1) = '-' then j:= 1;
i:= length(Edit1.Text);
if i > 1 + j then
begin
  Edit1.text:= Copy(Edit1.text,1,i-1);
  Zahl:= Edit1.Text;
  x:= StrToFloat(Zahl);
end;
end;

procedure TForm1.MalClick(Sender: TObject);
begin
if Operation = 0 then Zwischenergebnis:= x;
if Operation = 3 then Zwischenergebnis:= Zwischenergebnis * x;
 Edit1.Text:= '';
 x:=0;
 Operation:= 3;
end;

procedure TForm1.MinusClick(Sender: TObject);
begin
if Operation = 0 then Zwischenergebnis:= x;
if Operation = 2 then Zwischenergebnis:= Zwischenergebnis - x;
 Edit1.Text:= '';
 x:=0;

 Operation:= 2;
end;

procedure TForm1.NeuClick(Sender: TObject);
begin
Zwischenergebnis:= 0;
Edit1.Text:= '';
Operation:= 0;
end;

procedure TForm1.PlusClick(Sender: TObject);
begin
if Operation = 0 then Zwischenergebnis:= x;
if Operation = 1 then Zwischenergebnis:= Zwischenergebnis + x;
 Edit1.Text:= '';
 x:=0;
 Operation:= 1;
end;

procedure TForm1.ProzentClick(Sender: TObject);
begin
if x <> 0 then
begin
  x:= StrToFloat(Edit1.Text);
  x:= (Zwischenergebnis/100) * x;
  Edit1.Text:= FloatToStr(x);
  Zahl:= Edit1.Text;
end;
end;

procedure TForm1.QuadratClick(Sender: TObject);
begin
if x <> 0 then
begin
  x:= StrToFloat(Edit1.Text);
  x:= sqr(x);
  Edit1.Text:= FloatToStr(x);
  Zahl:= Edit1.Text;
end;
end;

procedure TForm1.VorzeichenClick(Sender: TObject);
begin
x:= StrToFloat(Edit1.Text);
x:= -x;
Edit1.Text:= FloatToStr(x);
Zahl:= Edit1.Text;
end;

procedure TForm1.WurzelClick(Sender: TObject);
begin
if x <> 0 then
begin
  x:= StrToFloat(Edit1.Text);
  x:= sqrt(x);
  Edit1.Text:= FloatToStr(x);
  Zahl:= Edit1.Text;
end;
end;

procedure TForm1.Zahl0Click(Sender: TObject);
begin
Edit1.Text:= Edit1.Text + Zahl0.Caption;
Zahl:= Edit1.Text;
x:= StrToFloat(Zahl);
end;

procedure TForm1.Zahl1Click(Sender: TObject);
begin
Edit1.Text:= Edit1.Text + Zahl1.Caption;
Zahl:= Edit1.Text;
x:= StrToFloat(Zahl);
end;

procedure TForm1.Zahl2Click(Sender: TObject);
begin
Edit1.Text:= Edit1.Text + Zahl2.Caption;
Zahl:= Edit1.Text;
x:= StrToFloat(Zahl);
end;

procedure TForm1.Zahl3Click(Sender: TObject);
begin
Edit1.Text:= Edit1.Text + Zahl3.Caption;
Zahl:= Edit1.Text;
x:= StrToFloat(Zahl);
end;

procedure TForm1.Zahl4Click(Sender: TObject);
begin
Edit1.Text:= Edit1.Text + Zahl4.Caption;
Zahl:= Edit1.Text;
x:= StrToFloat(Zahl);
end;

procedure TForm1.Zahl5Click(Sender: TObject);
begin
Edit1.Text:= Edit1.Text + Zahl5.Caption;
Zahl:= Edit1.Text;
x:= StrToFloat(Zahl);
end;

procedure TForm1.Zahl6Click(Sender: TObject);
begin
Edit1.Text:= Edit1.Text + Zahl6.Caption;
Zahl:= Edit1.Text;
x:= StrToFloat(Zahl);
end;

procedure TForm1.Zahl7Click(Sender: TObject);
begin
Edit1.Text:= Edit1.Text + Zahl7.Caption;
Zahl:= Edit1.Text;
x:= StrToFloat(Zahl);
end;

procedure TForm1.Zahl8Click(Sender: TObject);
begin
Edit1.Text:= Edit1.Text + Zahl8.Caption;
Zahl:= Edit1.Text;
x:= StrToFloat(Zahl);
end;

procedure TForm1.Zahl9Click(Sender: TObject);
begin
Edit1.Text:= Edit1.Text + Zahl9.Caption;
Zahl:= Edit1.Text;
x:= StrToFloat(Zahl);
end;

end.


Moderiert von user profile iconNarses: Beiträge zusammengefasst

und zwar ist es so:

wenn ich z.B. 3^3 rechnen will
gebe ich über meinen Taschenrechner 3 dann klick ich auf die Taste und dann wieder 3 ein so sollte er
funktionieren.
Bei mir ist aber wenn ich 3 klicke und dann die Taste kommt einfach eine 1...
Obl
Hält's aus hier
Beiträge: 3


Delphi 2007 Enterprise, Delphi XE2 Enterprise
BeitragVerfasst: Do 12.04.12 12:02 
Das wird daran liegen das in der Variable "Zwischenergebnis" noch ein 0 steht.
Und 3 hoch 0 ist nun mal 1.
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Do 12.04.12 12:03 
Setze doch mal einen BreakPoint bei Zeile 113 (F5) und lass laufen, ich wette Zwischenergebnis ist 0

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Hazel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Do 12.04.12 12:07 
hab das mal gemacht und du hast recht kommt ech 0 raus^^
Ihr merkt schon ich bin ziemlicher Anfänger^^
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Do 12.04.12 12:21 
na und jeder hat mal angefangen ...
Vielleicht solltest Du Hoch wie die anderen Operatoren behandeln + - etc.

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Hazel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Do 12.04.12 14:02 
Danke bummi ;)
werd ich mal probieren :)

Moderiert von user profile iconNarses: Beiträge zusammengefasst

So vielen vielen dank an alle :)
werde das morgen mal weiter versuchen hab da jetzt keinen Nerv mehr für :D

Ich hätte noch eine frage:

Jetzt möchte ich das wenn ich den Taschenrechner starte und ihn maximiere sich der komplette Taschenrechner maximiert also die Buttons usw.
hab schon im Internet gesucht aber nichts passendes gefunden :(

Schon mal vielen Danke
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Do 12.04.12 15:03 
user profile iconHazel hat folgendes geschrieben Zum zitierten Posting springen:

Ich hätte noch eine frage:

Neue Frage = neues Thema eröffnen, bitte.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)