Einzelnen Beitrag anzeigen

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