AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TObjectlist.ownsobjects zur Laufzeit anpassen ?

Ein Thema von bernhard_LA · begonnen am 21. Apr 2017 · letzter Beitrag vom 22. Apr 2017
Antwort Antwort
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.137 Beiträge
 
Delphi 11 Alexandria
 
#1

TObjectlist.ownsobjects zur Laufzeit anpassen ?

  Alt 21. Apr 2017, 18:52
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


MyClassInstanz.ownsobject := false; vor dem Zuweisen der Objectliste zum Thread, bekomme ich keinen Fehler beim Übersetzen aber einen typecast Fehler aus einem Thread heraus.
Kann ich Ownsobject zur Laufzeit nicht beliebig einstellen ?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#2

AW: TObjectlist.ownsobjects zur Laufzeit anpassen ?

  Alt 21. Apr 2017, 19:28
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#3

AW: TObjectlist.ownsobjects zur Laufzeit anpassen ?

  Alt 21. Apr 2017, 20:13
Zitat:
Thread?
Ich hoffe da greifen nicht mehrere Threads auf diese Liste gleichzeitig drauf zu.
Interessehalber: ist lesender Zugriff auf mehreren Threads schädlich?
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: TObjectlist.ownsobjects zur Laufzeit anpassen ?

  Alt 21. Apr 2017, 20:21
.. nun wenn Objecte aus der Liste herausgeworfen werden - ist der Zugriff nicht "nur lesend".

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#5

AW: TObjectlist.ownsobjects zur Laufzeit anpassen ?

  Alt 21. Apr 2017, 20:25
Das sagte ich ja auch nicht
Ich fragte nur, ob lesender Zugriff aus mehreren Threads schädlich sei
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: TObjectlist.ownsobjects zur Laufzeit anpassen ?

  Alt 21. Apr 2017, 20:50
Das sagte ich ja auch nicht
Ich fragte nur, ob lesender Zugriff aus mehreren Threads schädlich sei
Ich denke nicht, dass es schädlich ist nur lesend auf die Liste zuzugreifen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#7

AW: TObjectlist.ownsobjects zur Laufzeit anpassen ?

  Alt 21. Apr 2017, 22:43
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.137 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: TObjectlist.ownsobjects zur Laufzeit anpassen ?

  Alt 22. Apr 2017, 00:56
Zitat:
Thread?
Ich hoffe da greifen nicht mehrere Threads auf diese Liste gleichzeitig drauf zu.

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 .
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz