Hallo, habe mal wieder ein ähnliches Problem
Ich hatte mir mal einen Parser runtergeladen der mathematische Formeln umwandelt und berechnet.
Jetzt stehe ich vor folgendem Problem:
Ich lasse x bei -5 starten und habe die Funktion x^(0,5)
Diese Funktion ist ja aber erst für x >= 0 definiert. Wenn x kleiner ist kann er es nicht berechnen und es kommt eine Fehlermeldung.
Ich wollte es jetzt so machen, dass wenn es nicht funktioniert er x um 0.02 erhöht und das gleiche nochmal durchzieht, und zwar solange bis es schließlich klappt.
Dazu habe ich folgenden Quelltext geschrieben, der aber leider nicht funktioniert:
Code:
var s,t :string;
x : real;
kommastellen : integer;
begin
x := -5;
y := 1;
z := 1;
Kommastellen := 2;
s := edit1.text;
While True do
Begin
Try
t := Rechne(Kommastellen, s,x,y,z);
Break;
Except x := x +0.02; End;
End;
Panel1.caption := t;
end;
Es soll also zuerst die Formel ausgelesen werden. Über die Funktion "rechne" wird diese umgewandelt und mit x=-5 berechnet. Da das ja nicht geht soll er x dann um 0.02 erhöhen und es wieder probieren. So lange bis es klappt. Danach soll er dann das erste Ergebnis ausgeben, also 0.
Aber das klappt nicht
Das Programm hängt sich auf, als ob es in einer Endlosschleife hängt...
Was habe ich falsch gemacht?