Registriert seit: 18. Jan 2008
594 Beiträge
|
Re: Einfach mathe-Formeln in Delphi berechnen lassen
25. Mär 2009, 11: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 = 'sin' then
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
|