AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Einfach mathe-Formeln in Delphi berechnen lassen
Thema durchsuchen
Ansicht
Themen-Optionen

Einfach mathe-Formeln in Delphi berechnen lassen

Ein Thema von Errraddicator · begonnen am 24. Mär 2009 · letzter Beitrag vom 25. Mär 2009
Antwort Antwort
Errraddicator

Registriert seit: 26. Jun 2008
161 Beiträge
 
Delphi 2007 Professional
 
#1

Einfach mathe-Formeln in Delphi berechnen lassen

  Alt 24. Mär 2009, 14:53
Hiho,

hab da ma ne kleine Frage, weil ich in dieser Hinsicht bisher noch nix gemacht hab und jetzt son bissel wie der Ochs vorm Berg stehe.

Ich habe also ein Programm das Daten in einer Art Baumstruktur hinterlegt hat.
Jeder Knoten kann dabei eine Formel beinhalten, in denen dann sinngemäß steht "Knoten A - Knoten C".
Das Ganze hab ich per Programm so umgewandelt, dass dort jetzt auch Werte drin stehen in einer fertigen mathemathischen Formel, also "5 - 10" (5 = Wert von Knoten A, 10 = Wert von Knoten C).

Nur:
Wie kann ich Delphi jetzt verklickern mir "5 - 10" zu rechnen, ohne dass ich das mühsam selbst über schleifen programmieren muss?
Gibt es da eine Funktion für, die mir dann entsprechend nen Extended-Wert zurück gibt?


Danke im Voraus

cu Patrick
  Mit Zitat antworten Zitat
guidok

Registriert seit: 28. Jun 2007
417 Beiträge
 
#2

Re: Einfach mathe-Formeln in Delphi berechnen lassen

  Alt 24. Mär 2009, 15:04
Zitat von Errraddicator:
Gibt es da eine Funktion für, die mir dann entsprechend nen Extended-Wert zurück gibt?
Nicht das ich wüsste.



Du brauchst einen mathematischen Parser. Schau mal über die Suchfunktion hier im Forum.


Sollten es nur so einfache Formeln sein (Zwei Werte und eine Operation), dann kannst du das evtl. leicht selbst zerlegen und entsprechend berechnen. Du müsstest ja nur die beiden Werte links und rechts von der Operation in zwei Variablen schreiben und z.B. mit einer "case Operator of" Anweisung entsprechend verknüpfen.
  Mit Zitat antworten Zitat
TheFrog

Registriert seit: 24. Mär 2009
145 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Einfach mathe-Formeln in Delphi berechnen lassen

  Alt 24. Mär 2009, 16:04
Hallo Patrick,

ich habe mit folgender Komponente ganz gute Erfahrungen gemacht:

http://www.sadmansoftware.com/delphi/freeware/expeval.htm

Hans.
  Mit Zitat antworten Zitat
TheFrog

Registriert seit: 24. Mär 2009
145 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Einfach mathe-Formeln in Delphi berechnen lassen

  Alt 24. Mär 2009, 16:05
Uups, sorry, falscher Link:

sadmansoftware

Hans
  Mit Zitat antworten Zitat
Errraddicator

Registriert seit: 26. Jun 2008
161 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Einfach mathe-Formeln in Delphi berechnen lassen

  Alt 25. Mär 2009, 08:52
Danke für die Antworten!

Hab mir jetzt selber ma sone Funktion dafür geschrieben und die scheint - laut ersten Tests - auch zu funktionieren.
Klammern usw. kann sie zwar nich, aber das brauch ich auch erst ma nich. *G*

@Frog
Drittkomponenten versuche ich so weit es geht zu meiden, weil grade bei so kleineren Sachen wie dem hier, möchte ich schon gerne selbst irgendwie die Hand darüber behalten was da so passiert und was nicht.
Alleine schon im Sinne der Fehlerbehebung.
(Sprich: entweder mit Borland-Hausmitteln realisieren oder halt selber programmieren).

Ausserdem war/is das ma ne ganz nette Übung, wenn man sowas in der Art vorher noch nich gemacht hat, aber trotzdem Danke!
  Mit Zitat antworten Zitat
SimStar001

Registriert seit: 18. Jan 2008
594 Beiträge
 
#6

Re: Einfach mathe-Formeln in Delphi berechnen lassen

  Alt 25. Mär 2009, 10:27
wie wärs damit:

Delphi-Quellcode:
function GetFunktionsWert(Funktion : string;Variable : string; FunktionsWert : extended) : extended;
var position_zeichen : integer;
    text2, text3, tex6 : string;
begin
  Funktion := trim(Funktion);
  text2 := copy(Funktion,1,2);
  text3 := copy(Funktion,1,3);
  text6 := copy(Funktion,1,6);

  if pos('+',Funktion) > 0 then
    begin
    result := GetFunktionsWert(copy(Funktion,1,pos('+',Funktion) - 1) + GetFunktionsWert(copy(Funktion,pos('+',Funktion) + 1,length(Funktion));
    exit;
    end;
  
  if pos('-',Funktion) > 0 then
    begin
    result := GetFunktionsWert(copy(Funktion,1,pos('-',Funktion) - 1) - GetFunktionsWert(copy(Funktion,pos('-',Funktion) + 1,length(Funktion));
    exit;
    end;

  if pos('*',Funktion) > 0 then
    begin
    result := GetFunktionsWert(copy(Funktion,1,pos('*',Funktion) - 1) * GetFunktionsWert(copy(Funktion,pos('*',Funktion) + 1,length(Funktion));
    exit;
    end;

  if pos('/',Funktion) > 0 then
    begin
    result := GetFunktionsWert(copy(Funktion,1,pos('/',Funktion) - 1) / GetFunktionsWert(copy(Funktion,pos('/',Funktion) + 1,length(Funktion));
    exit;
    end;

  if text3 = 'sinthen
    begin
    result := sin(GetFunktionsWert(copy(Funktion,4,length(Funktion)));
    exit;
    end;

  if Funktion = Variable then
    result := FunktionsWert
      else
        result := strtofloat(Funktion);

end;

Diese Funktion, sehr viel Komplexer verwende ich in meinem Funktionsplotter. DU kannst hier noch alle möglichen Sachen einbinden, Klammern usw.. Musst halt nur alles entgegen den Rechenregeln Punkt vor STrich usw. schreiben, da die funktion rekursiv ist.

fall du ne komplette fertige DLL haben möchtest, kannst dich bei mir einfach per Mail melden!

LG Marco
Marco Tröger
  Mit Zitat antworten Zitat
TheFrog

Registriert seit: 24. Mär 2009
145 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Einfach mathe-Formeln in Delphi berechnen lassen

  Alt 25. Mär 2009, 10:46
Hallo Patrick,

wenn Du keine Drittkomponenten verwenden willst, dann wäre folgender Algorithmus vielleicht ganz interessant:

umgekehrte polnische Notation

Damit wäre auch die Klammersetzung erschlagen.

Dazu sollte es sicher irgendwelche Beispiel-Implementierungen geben.

Hans
  Mit Zitat antworten Zitat
guidok

Registriert seit: 28. Jun 2007
417 Beiträge
 
#8

Re: Einfach mathe-Formeln in Delphi berechnen lassen

  Alt 25. Mär 2009, 12:37
Zitat von TheFrog:
Hallo Patrick,

wenn Du keine Drittkomponenten verwenden willst, dann wäre folgender Algorithmus vielleicht ganz interessant:

umgekehrte polnische Notation

Damit wäre auch die Klammersetzung erschlagen.

Dazu sollte es sicher irgendwelche Beispiel-Implementierungen geben.

Hans
Das halte ich für eine gute Idee!
  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 04:05 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