Autor Beitrag
lilalaunebaer
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 17.02.06 17:55 
Hallo !

Ich starre wahrscheinlich schon zu lange darauf:
ausblenden volle Höhe Delphi-Quelltext
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:
ausblenden 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)));
  //c := PMult(a,b);
  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! :?
lilalaunebaer
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 17.02.06 17:58 
schon klar.... setlength geht vom ersten arrayelement 0 aus...