Hallo !
Ich starre wahrscheinlich schon zu lange darauf:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37:
| unit UPolynom;
interface
uses Math;
type TPolynom = Array of Extended; function PMult(A,B:TPolynom):TPolynom; function Eval(P:TPolynom;X:Extended):Extended; implementation
function PMult(A,B:TPolynom):TPolynom; var k,l:Integer; res:TPolynom; i,j:Integer; begin i := Length(A); j := Length(B); SetLength(res,i+j); for k := 1 to Length(A) do begin for l := 1 to Length(B) do begin res[k+l-1] := res[k+l-1] + A[k]*B[l]; end; end; result := res; end;
function Eval(P:TPolynom;X:Extended):Extended; var k,l:Integer; begin result := 0; l := Length(P)-1; for k := 0 to l do begin result := result + P[k+1]*power(x,k); end; end;
end. |
Ich benutze die Unit wie folgt in folgender Prozedur:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TfrmSettings.Button2Click(Sender: TObject); var a,b,c:TPolynom; begin setlength(a,3); setlength(b,3); a[1] := 4; a[2] := 2; a[3] := -2; b[1] := 1; b[2] := -1; b[3] := 2; showmessage(floattostr(eval(a,3.7))); exit; end; |
NACHDEM er die Methode eval durchlaufen hat (im debugger/haltepunkt hat result auch den richtigen wert)
kommt eine Delphi -Fehlermeldung "Stack-Overflow".
WARUM ?
Hilfe!
