Ok, die Befehle sind mir dann also klar. Aber wenn ich damit etwas sinnvolles machen will, zum Beispiel eine Kette, dann hab ich schon wieder Schwierigkeiten. Dann sieht das zum Beispiel so aus:
Delphi-Quellcode:
type Zeiger=^Element
Element:record
rechst:zeiger;
inhalt:integer;
end;
var wurzel, lauf: zeiger;
begin
wurzel:=NIL;
new(lauf);
lauf^.rechts:=NIL;
//"lauf^.rechts" ist also ein Zeiger, der vom Ziel von Zeiger "lauf" ausgeht und erstmal ins Leere zeigt?//
lauf^.inhalt:=1;
//ist "lauf^.inhalt" das selbe wie "lauf^"?//
Bis hierhin hätte man also einen Zeiger "lauf" mit "lauf^"=1, einen Zeiger "wurzel", der ins Leere zeigt und einen Zeiger "lauf^.rechts", der von "lauf^" aus ins Leere zeigt.
Nun gehts weiter:
Delphi-Quellcode:
wurzel:=lauf^;
new(lauf);
lauf^.rechts:=wurzel;
lauf^.inhalt:=2;
wurzel:=lauf;
der Zeiger "wurzel" zeigt jetzt auf einen Speicherplatz in dem der selbe Wert wie "lauf^" (1) gespeichert ist. der Zeiger "lauf" bekommt einen neuen Speicherplatz reserviert. der Zeiger "lauf^.rechts", der vom Ziel von "lauf" ausgeht zeigt jetzt auf den selben Speicherplatz wie "wurzel". "lauf^.inhalt" wird überschrieben. Der Inhalt ist nun ein anderer, "lauf" stellt aber immer noch die selbe Addresse dar.
Wenn das so alles richtig war, dann hätte ich noch ne Frage. Wollte man die Kette um eine 3 erweitern, müsste man dann mit einem "lauf^.rechts^.rechts"-Zeiger arbeiten? gibt es so einen Zeiger überhaupt?
Danke für den link, ich denke der hilft mir auch weiter.
Ich denke für mich ist das noch nicht so relevant ob ich new und dispose oder Getmem und freemem benutze. So komplex sind meine Programme nicht gerade *g*...