Thema: Delphi Einführung in Pointer

Einzelnen Beitrag anzeigen

Benutzerbild von atreju2oo0
atreju2oo0

Registriert seit: 5. Dez 2003
Ort: Berlin
289 Beiträge
 
Delphi 6 Enterprise
 
#15

Re: Einführung in Pointer

  Alt 7. Apr 2005, 16:32
Mal als Beispiel:

Du willst Kundendaten speichern, und weißt nicht genau wieviele das werden.
Ein super Fall um Listen zu erklären

Als erstes mal muss man den Typ deklarieren:

Delphi-Quellcode:
PMyDaten=^TMyDaten;
TMyDaten=record
  name:string;
  alter:integer;
  .
  .
  .
  next:PMyDaten;
 end;
Als nächstes braucht man den Anker/Wurzel.
Dieser wird beim Start des Progs einmal erstellt und danach NIE mehr angerühert, ausser beim beenden!

Delphi-Quellcode:
var MyDaten:PMyDaten;


new(MyDaten);
MyDaten.next:=nil;
Damit haste alles schonmal gut vorbereitet um die Liste nun zu füllen...
Wir stellen uns einfach mal vor wir haben ein Formular, wo die Daten in edits und so richtig eingegeben
wurden. Dann ist unten noch nen Knopf "Daten hinzufügen"

Delphi-Quellcode:
procedure Datenhinzufügen;
var help:PMyDaten // den Pointer nehmen wir um uns durch die Liste zu hangeln
begin
help:=MyDaten; // jetzt zeigen help und mydaten auf den selben Speicherbereich.
while help.next<>nil do //um zum letzten Element der Liste zu kommen gehen wir solange eins weiter bis das nachfolgende NIL ist.
  help:=help.next

// Jetzt haben wir mit help also einen Pointer der auf den Speicherpplatz des letzten Elements der Liste zeigt.
// Jetzt können wir das neue Element anhängen

new(help.next) // New stellt Speicherbereich für ein neues Element her und help.next zeigt automatisch auf dieses.
// Jetzt müssen wir noch auf das neue Element draufzeigen, da wir ja noch beim vorletzten hängen
help:=help.next;
// Na jetzt kommt nur noch Schreibarbeit: Werte eintragen und next auf nil setzten

help.Name:=Ich;
help....
help.next:=nil;

end;

// Das wars dann auch schon!
Thomas
  Mit Zitat antworten Zitat