hi sh17,
habe nicht sofort antworten können. musste ein wenig rumexperimentieren.
habe ersteinmal deinen ersten tipp ausprobiert.
stoße dabei aber auf schwierigkeiten.
habe nun die Funktion
getPointerByUid(uid:Integer)
umgeschrieben und
der Rückgabewert ist nun
Result:=self.Liste.List[i-1];
wobei
Liste:TobjectList
es wird auch ein Pointer zurückgegeben.
ich kann ihn aber nicht typisieren.
beim Aufruf
Delphi-Quellcode:
(...)
_prod:^TProdukt;
begin
_prod:=produkte.getPointerByUid(1);
showmessage(_prod.name);
end;
kommt ein access violation...
ich brauche aber unbedingt den pointer zu diesem objekt. sonst laufen die berechnungen alle durcheinander...
würde mich freuen, wenn du mir auch hier ein paar tipps geben könntest.
werde bald sobald ich ein bisschen zeit habe auch mal die anderen möglichkeiten genauer anschauen.
danke schon jetzt!
Gruß
EDIT:
hmmm.. habs glaub ich mit
Delphi-Quellcode:
function TItemListe.getPointerByUid(uid:Integer):Pointer;
var i:INteger;
erg:TItem;
begin
for i:=1 to self.Liste.Count do
begin
if (self.Liste.Items[i-1] as TItem).uid=uid then
begin
erg:=(self.Liste.Items[i-1] as TItem);
Result:=@erg; // Items[i-1] as TItem);
exit;
end;
end;
//Result:=nil;
raise ERangeError.Create('Kein ItemListeneintrag gefunden! '+#13+'UID: '+IntToStr(uid));
end;
hinbekommen... muss ich aber etwas genauer testen ob ich mit dem pointer doch nicht auf kopierte instanzen zugreife....