Einzelnen Beitrag anzeigen

Marcel2906

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

Pointer of Array of Pointer

  Alt 7. Dez 2011, 13:35
Delphi-Version: 2010
Hey Leute,

hab wiedermal ein Problem.
Und zwar...zunächst sollte ich ein einfaches Programm schreiben, in dem Zahlen in ein Array eingelesen werden, dann sortiert und wieder ausgegeben. Hab dies mit Quicksort gemacht. War auch kein Thema.
Um den Umgang mit Pointer zu üben, soll ich das jetzt so verändern, dass ein Pointer auf mein Array zeigt, und das Array wieder rum soll ein Array of Pointer sein. Also ich glaube das mit dem Array of Pointer habe ich hinbekommen:

Delphi-Quellcode:
Type
   TEintrag = Record
      Zahl: integer;
   End;
   PEintrag = ^TEintrag;

Type
   TForm1 = Class(TForm)
      ListBox1: TListBox;
      EingabeZahl: TEdit;
      Beenden: TButton;
      BtSort: TButton;
      Hinzufuegen: TButton;
      Procedure HinzufuegenClick(Sender: TObject);
      Procedure BeendenClick(Sender: TObject);
      Procedure BtShowClick(Sender: TObject);
      Procedure BtSortClick(Sender: TObject);

   private
      Liste: Array Of PEintrag;
      Procedure Output(LängeListe: integer);
      Procedure Input;
      Procedure Quicksort(erstes, letztes: integer);
      Procedure WertTauschen(StelleA, StelleB: Integer);
   End;
dazu die interessanten Proceduren:

Delphi-Quellcode:
Procedure TForm1.Input;
Var
   rec_p: PEintrag;
   x: integer;
Begin
   rec_p := Nil; // Init mit nichts
   new(rec_p); { Init eines Speicherbereches der Größe TRec und rec_P <> Nil und zeigt auf eine Adresse }

   //neuen Eintrag in Array eintragen
   rec_p^.Zahl := StrToInt(EingabeZahl.Text);
   SetLength(Liste, length(Liste) + 1);
   x := high(Liste);
   Liste[x] := rec_p;
End;

Procedure TForm1.Output(LängeListe: integer);
Var
   rec: TEintrag;
   rec_p: PEintrag;
   x: integer;
Begin
   rec_p := Nil; // Init mit nichts

   //ListBox leeren
   ListBox1.clear;
   For x := 0 To LängeListe Do
      ListBox1.Items.Strings[x] := IntToStr(Liste[x].Zahl);
End;
Doch wie schaffe ich es jetzt ein Pointer auf das Array zeigen zu lassen?
Mein erster Ansatz sieht so aus:

Delphi-Quellcode:
   Type
      TArray = Record
         Liste: Array Of PEintrag;
      End;
      PArray = ^TArray;
Doch so kann ich ja nicht mehr einfach auf meine "Liste" zugreifen..
  Mit Zitat antworten Zitat