AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

String in Formel umwandeln

Ein Thema von loirad · begonnen am 1. Jun 2011 · letzter Beitrag vom 1. Jun 2011
Antwort Antwort
loirad

Registriert seit: 25. Nov 2009
135 Beiträge
 
Delphi 6 Professional
 
#1

String in Formel umwandeln

  Alt 1. Jun 2011, 06:40
Liebe Delphi PRAXIS'ler,

kann man irgendwie einen String in eine Berechnungsformel umformen? Ich brauche es für ein Parabelprogramm. Hier ein Beispiel: 'y:=x²+2'! Geht das? Tipps wären sehr hilfreich !!!

Liebe Grüße
loirad
Wer Fehler findet darf sie behalten!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: String in Formel umwandeln

  Alt 1. Jun 2011, 06:50
Such mal nach MatheParser
Markus Kinzler
  Mit Zitat antworten Zitat
hboy

Registriert seit: 16. Jan 2004
364 Beiträge
 
#3

AW: String in Formel umwandeln

  Alt 1. Jun 2011, 08:41
je nachdem, wie tief du einsteigen willst, lohnt auch ein Blick in diesen Thread:
http://www.delphipraxis.net/141881-j...s-formeln.html
Power is nothing without TControl
  Mit Zitat antworten Zitat
Michelle

Registriert seit: 18. Dez 2010
21 Beiträge
 
Delphi 7 Professional
 
#4

AW: String in Formel umwandeln

  Alt 1. Jun 2011, 15:54
Hallihallo!

Wenn du genau die Form kennst, in der die Formel angegeben ist, kannst du es machen. Wenn also zum Beispiel weißt, dass der Benutzer die Formel IMMER in der Form: 'y:=x^N+B'angibt, funktioniert es:

Code:
var S : String; N,i: Integer; B: Real;
begin
  S := Edit1.text;
  N := StrToInt(S[6]);        //der 6. Buchstabe im String
  B := '';
  for i := 7 to Count(S) do   // damit B < 9 möglich ist: der 7. bis letze Buchstabe
    B := B + StrToReal(S[i]);
end;
Der Nachteil: sobald der Benutzer auch nur ein Leerzeichen zu viel setzt, funktioniert das alles schon nicht mehr.
Alternative: Mach verschiedene Edit-Felder, in denen du die einzelnen Werte reinschreiben lassen kannst.

Liebe Grüße!
Idee := Brain.Activate(self);
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: String in Formel umwandeln

  Alt 1. Jun 2011, 15:57
Der Nachteil: sobald der Benutzer auch nur ein Leerzeichen zu viel setzt, funktioniert das alles schon nicht mehr.
Man kann zB in dem String vorher aber auch alle Leerzeichen entfernen.
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#6

AW: String in Formel umwandeln

  Alt 1. Jun 2011, 16:02
Oder man sucht im string nach den zeichen. Bei einer festen formel ist ja alles in beton gemeißelt was die operatoren angeht.
  Mit Zitat antworten Zitat
loirad

Registriert seit: 25. Nov 2009
135 Beiträge
 
Delphi 6 Professional
 
#7

AW: String in Formel umwandeln

  Alt 1. Jun 2011, 16:03
Naja es sollen auch z.B. Wurzelfunktionen angezeigt weden. Mit Edits habe ich es jetzt, aber ich will ja auch Wurzelfunktionen anzeigen.
@all: Danke für eure Hilfe
Wer Fehler findet darf sie behalten!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.155 Beiträge
 
Delphi 12 Athens
 
#8

AW: String in Formel umwandeln

  Alt 1. Jun 2011, 16:04
Der Nachteil: sobald der Benutzer auch nur ein Leerzeichen zu viel setzt, funktioniert das alles schon nicht mehr.
Alternative: Mach verschiedene Edit-Felder, in denen du die einzelnen Werte reinschreiben lassen kannst.
In soeinem Fall legt man mehrere Edits auf die Form (pro Variable Eines) und dazwischen mit ein paar Labels für den Rest der Formel, bzw. dahinter ein Image.

PS: FormelParser gibt es mehrere in der DP zu finden.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Michelle

Registriert seit: 18. Dez 2010
21 Beiträge
 
Delphi 7 Professional
 
#9

AW: String in Formel umwandeln

  Alt 1. Jun 2011, 16:50
Wenn du eine Wurzelfunktion berechnen lassen willst, dann musst du in das Edit-Feld für die Potenz 1/n schreiben, denn: sqrt(x) = x^(1/2) bzw. die n-te Wurzel von x = x^(1/n).
Wenn du das nicht möchtest, kannst du auch mithilfe von RadioButtons oder einer Combobox auswählen lassen, ob das eine Wurzelfunktion ist oder eine Potenzfunktion.
Du musst aber sowieso abfragen, die wievielte Potenz berechnet werden soll, da die Anzahl der Parameter ja davon abhängt. Lass doch einfach in ein Editfeld oder mithilfe einer Combobox die Potenz bzw. Wurzel anzeigen. Daraufhin lässt du dann die entsprechende Anzahl Editfelder (1 Editfeld pro Parameter) sichtbar machen und hinterher auswerten.


Das mit den Editfeldern habe ich mir so vorgestellt:
(Label, Editfeld)
Zurerst: n
Daraufhin stellst du Visible: f(x)= a * x^n + b * x^(n-1) + ... + z *x^(n-n)

Zum Beispiel: 3
f(x)= a * x^3 + b * x^2 + c * x + d
Idee := Brain.Activate(self);

Geändert von Michelle ( 1. Jun 2011 um 17:21 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.155 Beiträge
 
Delphi 12 Athens
 
#10

AW: String in Formel umwandeln

  Alt 1. Jun 2011, 19:18
http://www.delphipraxis.net/135569-m...athelib-_.html
http://www.delphipraxis.net/153816-t...i-rechner.html
http://www.delphipraxis.net/142004-u...-%5Bos%5D.html
und wie schon erwähnt Delphi-Referenz durchsuchenMathe-Parser
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz