Einzelnen Beitrag anzeigen

mojo777

Registriert seit: 10. Sep 2003
402 Beiträge
 
#5

Re: Pointer auf Objekt setzen und verwenden

  Alt 28. Feb 2007, 22:01
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;
Muh macht die kUh
  Mit Zitat antworten Zitat