![]() |
TObjectlist.ownsobjects zur Laufzeit anpassen ?
ich verwende eine ObjektListe analog zu folgendem kurzen Code Auszug
Delphi-Quellcode:
MyObjList = Class (TObjectList)
..... constructor Create (data1, data2 : TSameData) ; ... end; constructor MyObjList.Create (data1, data2 : TSameData) ; begin .... self.ownsobjects := true; end; Die Klasse wird in vielen Stellen in unseren Anwendungen verwendet. In einem bestimmten Falle benötige ownsobjects := false; für eine Instanz dieser Klasse. (die in einem Thread verwendet wird) Wenn ich den Klassen Konstruktor Anpasse , also auf false setze und mein Programm erzeuge funktioniert die Anwendung. Wenn ich jetzt in die Anwendung
Delphi-Quellcode:
vor dem Zuweisen der Objectliste zum Thread, bekomme ich keinen Fehler beim Übersetzen aber einen typecast Fehler aus einem Thread heraus.
MyClassInstanz.ownsobject := false;
Kann ich Ownsobject zur Laufzeit nicht beliebig einstellen ? |
AW: TObjectlist.ownsobjects zur Laufzeit anpassen ?
Delphi-Quellcode:
MyClassInstanz.ownsobject := false;
Macht rein garnichts, außer die Variable FOwnsObjects in der Objektliste zu ändern. Thread? Ich hoffe da greifen nicht mehrere Threads auf diese Liste gleichzeitig drauf zu. PS: Mit ObjectList.Extract bekommt man Objekte aus der Liste raus, ohne dass sie freigegeben werden, auch wenn OwnsObjects=True ist. |
AW: TObjectlist.ownsobjects zur Laufzeit anpassen ?
Zitat:
|
AW: TObjectlist.ownsobjects zur Laufzeit anpassen ?
.. nun wenn Objecte aus der Liste herausgeworfen werden - ist der Zugriff nicht "nur lesend".
Grüße Klaus |
AW: TObjectlist.ownsobjects zur Laufzeit anpassen ?
Das sagte ich ja auch nicht :P
Ich fragte nur, ob lesender Zugriff aus mehreren Threads schädlich sei :stupid: |
AW: TObjectlist.ownsobjects zur Laufzeit anpassen ?
Zitat:
Grüße Klaus |
AW: TObjectlist.ownsobjects zur Laufzeit anpassen ?
Wenn "Lesend" wirklich nur "Lesend" ist
und niemand zur Selben Zeit schreiben könnte, dann ja. PS: Aus einem Stream "Lesen" tut auch "Schreiben" und zwar wird dabei der Positionszeiger verändert. |
AW: TObjectlist.ownsobjects zur Laufzeit anpassen ?
Zitat:
wir haben nur lesenden Zugriff auf diese TObjectlist (MyClass) in den einzelnen Threads; Ich verstehe nicht warum ich mit ownsobject:= false ein korrekt arbeitendes Programm habe und wenn ich die Property später im programm Setzte einen Typcast fehler bekomme . |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz