Da gibts ein Problem mit der Übergabe eines Dyn. Arrays:
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:
| Procedure TForm1.Berechnen_Arrayfuellen(K:array of TKredit;idz:integer); var i, tmp:byte; KJahr:word; begin KJahr:=KredJahr; K[1].Jahr:=KredJahr; K[1].Monat:=KredMonat; tmp:=KredMonat; setlength(K,idz); <-[Fehler] Raten2.pas(72): E2008 Inkompatible Typen For i:=0 to (idz-1) do begin if i =0 then K[i].bezahlt:=Rate_1 else K[i].bezahlt:=K[i-1].bezahlt+Rate; K[i].Rate_Nr:=i; K[i].Jahr:=KredJahr; K[i].Monat:=tmp; if tmp > 12 then begin tmp:=1; K[i].Monat:=tmp; inc(Kjahr); K[i].Jahr:=KJahr; end; inc(tmp); end; end; ....... |
Wenn ich die Arraylänge vor dem Aufruf der Prozedur mit 'SetLenght' setze, funzt es:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.FormCreate(Sender: TObject); begin BorderIcons := [biSystemmenu]; Form1.caption:='Astra Raten - Stand: '+DatetoStr(Date); .... .... setlength(Kredit,48); Berechnen_Arrayfuellen(Kredit,Ratenzahl); |
Hätte die 'SetLength' aber lieber in der Prozedur, geht das?