Hi Leute,
warum bekomme ich bei dieser Procedure eine Meldung, dass inkompatible Typen vorliegen:
Delphi-Quellcode:
procedure TForm1.Primfaktoren(Zahl:integer;var Faktoren:array of integer);
var teiler, zaehler, i : integer;
begin
repeat
SetLength(Faktoren,0); //<- Hier taucht die Meldung einmal auf
teiler:=0;
repeat
teiler := teiler +1;
zaehler:=0;
for i:=1 to teiler do
if teiler mod i = 0 then
zaehler := zaehler + 1;
until
(zahl mod teiler = 0) and (zaehler = 2);
zahl := zahl div teiler;
setLength(Faktoren,length(Faktoren)+1); //<- Hier nochmals
Faktoren[length(Faktoren)] := teiler;
until
zahl = 1;
end;
Die Funktion soll die übergebene Zahl in ihre Primfaktoren aufteilen und diese Primfaktoren dann in einen Array schreiben, der zurückgegeben wird. Aufrufen tu ich die Prozedur folgendermaßen:
Delphi-Quellcode:
var X: array of integer;
(...)
procedure TForm1.Button1.Click(Sender:TObject);
begin
Primfaktoren(132,X);
end;
(...)
end.
//EDIT1: Es sollte SetLength(Faktoren,0); heißen, voher stand statt 0 ein i!