Ich hab jetzt als Initialisierung setlength mit 1 gemacht aber die viecheranzahl auf 0 gelassen, damit funktionierts wunderprächtig
Delphi-Quellcode:
TViech = record
laenge: integer;
haare: integer;
end;
TViecherGruppe = record
viecheranzahl: integer;
viecher: array of TViech;
end;
var
Form2: TForm2;
blaueviecher: TViecherGruppe;
implementation
{$R *.dfm}
Function mutiere(var viech:tviech): TViech;
begin
result.laenge:=viech.laenge+random(5);
result.haare:=viech.haare+random(5);
end;
procedure TForm2.Button1Click(Sender: TObject);
var
i: integer;
begin
blaueviecher.viecheranzahl:= 0;
for i := 0 to 10000 do begin
inc(blaueviecher.viecheranzahl);
setlength(blaueviecher.viecher,blaueviecher.viecheranzahl+1); //der array ist 1 größer !!!ALS!!!^^ die benötigte anzahl
blaueviecher.viecher[blaueviecher.viecheranzahl]:=
blaueviecher.viecher[blaueviecher.viecheranzahl-1]; // hier sieht es so aus wie das letzte
blaueviecher.viecher[blaueviecher.viecheranzahl]:=
mutiere(blaueviecher.viecher[blaueviecher.viecheranzahl]) // hier wird es ein inviduum, da es mutiert
end;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
randomize;
blaueviecher.viecheranzahl:= 0;
setlength(blaueviecher.viecher, 1);
blaueviecher.viecher[0].haare:= 0;
blaueviecher.viecher[0].laenge:= 1;
end;