Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Hilfe Taschenrechner
Hazel - Do 12.04.12 09:32
Titel: Hilfe Taschenrechner
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
Narses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
Nersgatt - Do 12.04.12 09:46
:welcome:
Genau, in der Unit "Math" gibt es die Funktion "Power". Wo ist denn konkret Dein Problem?
Hazel - Do 12.04.12 09:58
Hey
danke erstmal :)
also ich verstehe nicht ganz wie ich das machen muss^^
Gausi - 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
Hazel - Do 12.04.12 10:23
Danke :*
hab jetzt noch einen Fehler drinnen -.-
weis nicht ganz wieso es nicht funktioniert:
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
Narses: Delphi-Tags hinzugefügt
Nersgatt - Do 12.04.12 10:26
Dazu müsstest Du uns bitte die Fehlermeldung sagen, die Du bekommst.
Hazel - Do 12.04.12 10:27
Gibt keine Fehlermeldung aus es funktioniert nur nicht^^
bummi - Do 12.04.12 10:47
was stellt denn dieses dar?
Delphi-Quelltext
1: 2: 3:
| if x <> 0 then begin x:= StrToFloat(Edit1.Text); |
Hazel - Do 12.04.12 10:51
soll ja ein Taschenrechner werden. Und mit Null soll der nicht rechnen deswegen if x <> 0
bummi - Do 12.04.12 10:53
ja und was steht vor der Zuweisung x:= StrToFloat(Edit1.Text); in x ???
Hazel - Do 12.04.12 10:57
ich versteh deine Frage nicht ganz^^
sorry bin noch anfänger
Nersgatt - 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...
Hazel - Do 12.04.12 11:40
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 public 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
Narses: Beiträge zusammengefasstund 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 - 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 - Do 12.04.12 12:03
Setze doch mal einen BreakPoint bei Zeile 113 (F5) und lass laufen, ich wette Zwischenergebnis ist 0
Hazel - 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 - Do 12.04.12 12:21
na und jeder hat mal angefangen ...
Vielleicht solltest Du Hoch wie die anderen Operatoren behandeln + - etc.
Hazel - Do 12.04.12 14:02
Danke bummi ;)
werd ich mal probieren :)
Moderiert von
Narses: 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 - Do 12.04.12 15:03
Hazel hat folgendes geschrieben : |
Ich hätte noch eine frage: |
Neue Frage = neues Thema eröffnen, bitte.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!