Hallo,
yepp, Init ist der Constructor. Das mit den Knoten haben wir eben aus der doppelt verketteten Liste, wie wir sie im Unterricht durchgenommen haben. Bei dieser Version wurde ein neuer Knoten initialisiert und dann in die Liste geschoben und die Verknüpfungen neu gesetzt. Beim Beenden habe ich dann wie schon gesagt Knoten für Knoten aus der Liste genommen und dann mit FreeAndNil eliminiert. Jetzt haben wir eben ein Array - natürlich ist das keine doppelt verkettete Liste mehr, aber eben die Felder "kennen sich" wie in einer Liste. Die Struktur hat uns unser Lehrer vorgegeben.
Hier noch der Code für das Erstellen:
Delphi-Quellcode:
var
LZahl: Cardinal = User-Eingabe, bei meinen Tests 3
Knoten: Array of TKnoten;
{----------}
var X, Y: Cardinal;
begin
SetLength(Knoten, Pred(LZahl));
for Y := 0 to Pred(LZahl) do
begin
for X := 0 to Pred (LZahl) do
begin
Knoten[X + (Lzahl * Y)] := TKnoten.Start;
Knoten[X + (Lzahl * Y)].Position := Point(X, Y);
Knoten[X + (Lzahl * Y)].Nummer := X + (Lzahl * Y);
end;
end;
for Y := 0 to Pred(LZahl) do
begin
for X := 0 to Pred (LZahl) do
begin
if (X <> 0) then
Knoten[X + (Lzahl * Y)].KLinks := Knoten[X + (Lzahl * Y) - 1];
if (X <> Pred(LZahl)) then
Knoten[X + (Lzahl * Y)].KRechts := Knoten[X + (Lzahl * Y) + 1];
if (Y <> 0) then
Knoten[X + (Lzahl * Y)].KOben := Knoten[X + (Lzahl * Y) - Lzahl];
if (Y <> Pred(Lzahl)) then
Knoten[X + (Lzahl * Y)].KUnten := Knoten[X + (Lzahl * Y) + Lzahl];
end;
end;
InListviewEinlesen;
@Khabarakh: Wie meinst du das? Bzw. wie kann ich das vermeiden?
Gruß,
ManuMF