Einzelnen Beitrag anzeigen

Marcel2906

Registriert seit: 17. Aug 2011
Ort: Warendorf
112 Beiträge
 
Delphi 2010 Professional
 
#1

Pointer of Array of Pointer neues Prinzip

  Alt 9. Dez 2011, 08:36
Delphi-Version: 2010
Nachdem ich mein Programm fertig habe, gab es eine neue Aufgabe:
Nun soll der Record Vorgänger, Wert und Nachfolger enthalten.
Ich füge mal ein jpg ein, dass ich bekommen habe zur Hilfe.

Nun wollte ich erstmal anfangen das eingeben zu Programmieren.
Also die erste Eingabe ist der start record und zeigt auf den 2, der auf den 3 usw.

Also ich hab mir das so gedacht, stimmt das? :

Delphi-Quellcode:
Type
   PEintrag = ^TEintrag;
   TEintrag = Record
      Vorgaenger: PEintrag;
      Wert: integer;
      Nachfolger: PEintrag;
   End;

Type
   TListe = Array Of PEintrag;
   PListe = ^TListe;

Type
   TForm1 = Class(TForm)
      LBOutNumber: TListBox;
      EdGetNumber: TEdit;
      BtBeenden: TButton;
      BtSort: TButton;
      BtHinzufuegen: TButton;
      Procedure FormCreate(Sender: TObject);
      Procedure FormDestroy(Sender: TObject);
   private
      Liste: PListe;
      Eintrag: PEintrag;
      Procedure Input;
      ...
   End;

..

Procedure TForm1.FormCreate(Sender: TObject);
Begin
   Liste := Nil;
   New(Liste);
End;

Procedure TForm1.FormDestroy(Sender: TObject);
Var
   i: integer;
Begin
   For i := Low(Liste^) To High(Liste^) Do
      Dispose(Liste^[i]);
   Dispose(Liste);
End;

Procedure TForm1.Input;
Var
   x, i: integer;
Begin
   // Init mit nichts
   Eintrag := Nil;
   new(Eintrag);
   //neuen Eintrag in Array eintragen
   Eintrag^.Wert := StrToInt(EdGetNumber.Text);
   //Array um 1 erweitern
   SetLength(Liste^, Length(Liste^) + 1);
   //Zahl ans Ende des Arrays eintragen
   x := high(Liste^);
   Liste^[x] := Eintrag;
   //Erste Eintrag hat den Vorgänger Nil
   Liste^[low(Liste^)].Vorgaenger := Nil;
   Liste^[low(Liste^)].Nachfolger := Liste^[(low(Liste^)+1)];
   //Vorgänger und Nachfolger der Einträge festlegen
   For i := (low(Liste^) + 1) To (high(Liste^) - 1) Do Begin
      Liste^[i].Vorgaenger := Liste^[i - 1];
      Liste^[i].Nachfolger := Liste^[i + 1];
   End;
   //Letzte Eintrag hat den NAchfolger Nil
   Liste^[high(Liste^)].Vorgaenger := Liste^[(high(Liste^)-1)];
   Liste^[high(Liste^)].Nachfolger := Nil;
End;
Angehängte Grafiken
Dateityp: jpg Record_Pointer.jpg (18,0 KB, 14x aufgerufen)
  Mit Zitat antworten Zitat