Forum: Object-Pascal / Delphi-Language
by messie,
27. Jul 2005
genau das hab' ich ja von Anfang an getan. Leider habe ich dabei gepennt und nur die Referenz übergeben und keine echte Kopie erstellt:
LocalObjectlist.item := ObjectList.item;
statt
LocalObjectList.add;
LocalObjectlist.item.Object1 := ObjectList.item.Object1;
Damit habe ich natürlich beim clear oder free auf nicht verfügbare Referenzen zugegriffen.
Forum: Object-Pascal / Delphi-Language
by messie,
27. Jul 2005
Ist eine Idee, die Mutexe geben mir aber die Möglichkeit, den zeitkritischen Teil zu bevorzugen.
Ein wenig komisch, daß ich solche Kontruktionen mit Mutexen zuhauf habe und die nur bei den ObjectList nicht funzen. Kann das sein, daß der Mutes zwar die Liste schützt, aber andere Programmteile auf die Objekte zugreifen können? Wie gesagt, die Zugrifssverletzung gibts nicht immer.
Grüße, Messie
Forum: Object-Pascal / Delphi-Language
by messie,
27. Jul 2005
Funzt irgendwie nicht. Egal was ich mache, ich bekomme sporadisch eine Zugriffsverletzung, auch wenn ich die Liste behalte und mit einem clear aufräume.
if WaitForSingleObject(Mutex1,100) = WAIT_OBJECT_0 then
try
if assigned(Objectlist1) then
freeandnil(Objectlist1);
finally
ReleaseMutex(Mutex1);
end;
Forum: Object-Pascal / Delphi-Language
by messie,
27. Jul 2005
Das gibt's bei einer TObjectlist nicht, jedenfalls nicht bei mir... Gibt es eine ALternative zur der PRüfung mit assign?
Grüße, Messie
Forum: Object-Pascal / Delphi-Language
by messie,
27. Jul 2005
Das mit dem AOwnsObject hatte ich schon so gemacht. Die Liste am Ende der Routine mit free freizugeben fände ich auch gut, nur bleibt mir ein Problem (vielleicht ist dies mein Eigentliches): ich greife in einer anderen Routine ständig auf diese Liste zu. Bisher verwende ich eine if assigned-Anweisung, um zu Prüfen, ob es die Liste gibt. Nach einem free bleibt die Referenz in der Zuweisungsliste...
Forum: Object-Pascal / Delphi-Language
by messie,
27. Jul 2005
Moin,
eine Frage zur Speicherverwaltung: ich erzeuge lokal eine TObjectlist, die für einen Vergleich mit einigen Objekten gefüllt wird. Danach ist die Liste über. Beim nächsten Durchgang muß ich sie wieder neu erzeugen und mit neuen Objekten füllen.
Reicht es, wenn ich sie mit einem create neu erzeuge? Werden dann auch die Speicherzuweisungen zu den Objekten gekappt? Oder wird durch die...