Hallihallo, also ich hab hier so ein Problem.
Zuerst hatte ich eine ganz normale eigene procedure, die sah ungefähr so aus.
Delphi-Quellcode:
procedure tform1.Spurzeichnen(image:timage);
var
i,s,x,y:integer;
begin
i:=1;
s:=0;
while i <= Personenanzahl do
begin
x:=Daten[i].Ort[0].x;
y:=Daten[i].Ort[0].y;
image.Canvas.MoveTo(x,y);
s:=1;
while s <= Daten[i].Anzahl do
begin
x:=Daten[i].Ort[s].x;
y:=Daten[i].Ort[s].y;
image.Canvas.LineTo(x,y);
s:=s+1;
end;
i:=i+1;
end
end;
Daten ist vom Typ TOrte und speichert die einzelnen Positionen aller Orte:
Delphi-Quellcode:
TOrte = record
Ort:array[0..1000]of Tpoint;
Anzahl: integer; //Anzahl der Schritte
end;
...
var
Form1: TForm1;
Daten:array[0.1000]of TOrte;
Personenanzahl:integer
Das Programm soll Spur der Personen speichern, hat auch wunderbar geklappt.
Jetzt hab ich noch eine eigene Klasse gebaut, die Datengruppe, um das Programm noch etwas zu verallgemeinern:
Delphi-Quellcode:
TDatengruppe = record
Daten:array[0..1000]of TOrte;
Personenanzahl: integer;
end;
...
var
Form1: TForm1;
Datengruppe1:Tdatengruppe
somit mussste ich nur noch die Procedure noch verallgemeinern:
Delphi-Quellcode:
procedure tform1.Spurzeichnen(image:timage,Datengruppe:Tdatengruppe);
var
i,s,x,y:integer;
begin
i:=1;
s:=0;
while i <= Datengruppe.Personenanzahl do
begin
x:=Datengruppe.Daten[i].Ort[0].x;
y:=Datengruppe.Daten[i].Ort[0].y;
image.Canvas.MoveTo(x,y);
s:=1;
while s <= Datengruppe.Daten[i].Anzahl do
begin
x:=Datengruppe.Daten[i].Ort[s].x;
y:=Datengruppe.Daten[i].Ort[s].y;
image.Canvas.LineTo(x,y);
s:=s+1;
end;
i:=i+1;
end
end;
Aufrufen der Procedure mit Button:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
Spurzeichnen(image1,datengruppe1)
end
Jetzt kommt plötzlich ein Stack-overflow, wenn ich diese procedure ausfühern will!! warum??
Ich habe doch eigentlich nichts verändert!