![]() |
Delphiproblem - Taschenrechner brauche hilfe !
Hallo Delphi-Community,
bin jetzt erst seit kurzem am Delphi proggen. Wie viele andere fange ich auch mit einem Taschenrechner an :) In der Suche habe ich leider nichts zu meinem Problem gefunden und google spuckt auch nur Müll aus. Zu meinem Problem: Also ich habe ein Edit-Feld in dieses werden Zahlen durch Button Klicks eingefügt. Rechenarten habe ich schon einige jedoch fehlt mir noch eine die ich gerne einbauen würde bei der ihr mir eventuell auch helfen könntet (wobei dies eigentlich nicht mein richtiges problem ist. Dazu später mehr). So ich habe auch einen Komma Button der auch einwandfrei funktioniert, allerdings kommt jetzt mein Problem: Ich habe eine Del button der die letzte ziffer löscht, allerdings hab ich meinem komma button zugewiesen, dass er nach einmaligem drücken auf Enabled := False ist, damit man nicht in eine zahl 2 Kommas einbauen kann. Nun will ich es aber so haben das wenn ich z.B. die zahl 17,5 habe und dann 2 mal auf den DEL button drücke, sodass das komma weg ist der Komma button wieder auf enabled := True springt. Zur rechenart die ich noch gerne haben würde, wäre die n-te wurzel aus x zu berechnen ohne die function oder wie das auch genannt wir "Power" aus der Unit math zu verwenden. Ich hoffe ihr versteht mein/e Problem/e und könnt mir so schnell wie möglich helfen. Schon mal ein Dickes Danke an alle die mir helfen :D Mfg Alex |
Re: Delphiproblem - Taschenrechner brauche hilfe !
Zitat:
Logarithmengesetze, am einfachsten mit dem natürlichen Logarithmus und einer e-Funktion. |
Re: Delphiproblem - Taschenrechner brauche hilfe !
Zitat:
Es wäre nett wenn du mir ein Beispiel geben könntest oder es genauer erklären könntest. Hoffe es findet sich noch jemand der mir bei meinem erstem Problem helfen kann :wink: |
Re: Delphiproblem - Taschenrechner brauche hilfe !
Delphi-Quellcode:
[Edit] Das Ganze funktioniert auch ohne unit math. [/Edit]
// nte Wurzel aus x
procedure TForm1.Button1Click(Sender: TObject); var x,n,Ergebnis:double; begin x:=StrToFloat(Edit1.Text); n:=3; Ergebnis:=exp((1/n)*ln(x)); Edit2.Text:=FloatToStr(Ergebnis); end; Google einmal nach Logarithmen, Potenzen und Wurzeln oder schaue in deine Mathe-Formelsammlung. :) |
Re: Delphiproblem - Taschenrechner brauche hilfe !
Zitat:
|
Re: Delphiproblem - Taschenrechner brauche hilfe !
Gerne wieder :)
PS: 2 Fragen --> 2 Threads ! |
Re: Delphiproblem - Taschenrechner brauche hilfe !
Erstmal wissen wir garnicht wie dein Taschenrechner arbeitet, da ist es schwer zu sagen, wie du was lösen kannst.
Dann kann ich garnicht verstehen, wie du nichts finden konntest, denn immerhin gibt es alleine mehrere Taschenrechner und Mathe-Bibliotheken hier in der DP, da sollte sich langsam mal für alles eine Lösung finden lassen. Zitat:
PS: Es läßt sich eigentlich fast jede mathematische Operation auf die grundlegenste Operation reduzueiren. > Die Addition Das ginge selbst mit sowas, wie den Wurzeln. PSS: Wenn ich mal so in meine letze Mathe-Lib reinschaue, dann wurde wird da grundsätzlich alles manuell errechnet und diese Lib ist hier in der DP zu finden. In diese Lib ist zwar keine Funktion für die n-te Wurzel zu finden, aber wenn man sich das "einfache" Prinzip der "Quadratwurzel" ansieht, dann ist es ein Leichtes dieses für eine mehrfache Wurzelfunktion zu verwenden. Zu dem Komma ... wenn dein Löschbutton das Komma löscht (du kannst ja vor dem Löschen prüfen was gelöscht wird), dann stellst du einfach das Button.Enable wird auf True und fertig. Ist das denn so schwer? PS: Hier mal eine etwas ältere und einfache Power-Funktio aus Delphi. (in neueren Versionen ist ja eine optimiertere Variante verbaut)
Delphi-Quellcode:
{ Power: Raise base to any power.
For fractional exponents, or |exponents| > MaxInt, base must be > 0. } function Power(const Base, Exponent: Extended): Extended; begin if Exponent = 0.0 then Result := 1.0 { n**0 = 1 } else if (Base = 0.0) and (Exponent > 0.0) then Result := 0.0 { 0**n = 0, n > 0 } else if (Frac(Exponent) = 0.0) and (Abs(Exponent) <= MaxInt) then Result := IntPower(Base, Integer(Trunc(Exponent))) else Result := Exp(Exponent * Ln(Base)) end; |
Re: Delphiproblem - Taschenrechner brauche hilfe !
Zitat:
Zitat:
Zitat:
|
Re: Delphiproblem - Taschenrechner brauche hilfe !
Zitat:
|
Re: Delphiproblem - Taschenrechner brauche hilfe !
Pack die Abfrage doch in das Edit Feld:
Button1 = Komma
Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject);
begin if Ansipos(DecimalSeparator, Edit1.Text) > 0 then Button1.Enabled := False else Button1.Enabled := True; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz