Einzelnen Beitrag anzeigen

Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#8

Re: Probleme mit dyn. Array & pseudo-doppelt verketteter

  Alt 19. Jun 2006, 20:45
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
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat