nicht so ganz. also pointer an sich sind zeiger auf einen speicherplatz(!)
wenn du ein objekt übergibt, dann übergibst du eine instanz von diesem.
so kannst du z.b. aus einer procedure ein objekt irgendwohin übergeben und dann irgendwo speichern.
nicht aber bei pointern.
bsp:
Delphi-Quellcode:
procedure saveObjPointer(obj:Pointer);
begin
self.addToList(obj);
end;
und
procedure saveObj(obj:Tobj);
begin
self.objArr[2]:=obj;
end;
so. jetzt liegt der trick im aufruf:
procedure aufruf();
var obj:Tobj;
begin
obj:=TobjCreate(...);
saveObjPointer(@obj); //1. funktiniert nicht, weil das eigentliche obj. nur solange lebt, wie die procedur, die ihn erstellt hat.
saveObj(obj);
end;
procedure test();
var obj:^Tobj;
begin
obj:=self.list[i];
obj^.GibName; //BOOM! Fehler! Das Ding ist nicht mehr da, weil die proc "aufruf" schon längst tot ist.
self.objArr[2].gibName; //klappt
end;