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..