Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   TObjectList: AV wenn OwnsObject := True (https://www.delphipraxis.net/84818-tobjectlist-av-wenn-ownsobject-%3D-true.html)

sirius 22. Jan 2007 13:43

Re: TObjectList: AV wenn OwnsObject := True
 
Zitat:

Zitat von sakura
oder der Liste verbieten die Objekte auch freizugeben (OwnsObjects := False;).

dann aber mit update aufpassen...

Luckie 22. Jan 2007 13:45

Re: TObjectList: AV wenn OwnsObject := True
 
Gar nichts. Den habe ich nicht überschrieben, das ist noch der original Destruktor von der Komponente. Allerdings liegen auf der Komponete noch andere Objekte, die zu der Komponente gehören, wie Layer usw. Allerdings bekomme ich auch eine AV, wenn sich dort keine weiteren Objekte befinden.

Also vom Parent entferne ich sie nicht. Aber das hatte auch keine Probleme als ich noch mit TList gearbeitet habe und im Destruktor die Objekte von Hand mit Free freigegeben habe.

@sakura: Wie gesagt, die TImageEnVect Komponenten, die ich dynamisch erstelle liegen nur in meinem eigenen Container von Typ TObjectList. Sie haben zwar das Formular als Parent aber das sollte ja eigentlich nicht stören. Und wenn ich OwnsObjects auf False setze, dann muss ich mich ja wieder selber um das Freigeben kümmern, was ich ja eigentlich vermeiden wollte.

PS: @sakura: Hast du mit diesen Komponenten schon eigene Erfahrungen gemacht? Ich hätte da nämlich noch das ein oder andere Problem. Und die Newsgroup war bisher noch nicht sehr hilfreich.

Hawkeye219 22. Jan 2007 14:17

Re: TObjectList: AV wenn OwnsObject := True
 
Hallo Michael,

Zitat:

@sakura: Wie gesagt, die TImageEnVect Komponenten, die ich dynamisch erstelle liegen nur in meinem eigenen Container von Typ TObjectList. Sie haben zwar das Formular als Parent aber das sollte ja eigentlich nicht stören.
Sakuras Hinweis noch einmal mit anderen Worten: ein TWinControl gibt im Destruktor alle in ihm liegenden Controls frei! Du kannst das von dir beobachtete Verhalten leicht mit der TImage-Komponente von Borland nachstellen. Ohne Lösen vom Parent knallt es, mit Lösen gibt es keine Probleme.

Gruß Hawkeye

Angel4585 22. Jan 2007 14:21

Re: TObjectList: AV wenn OwnsObject := True
 
Ich habe auch auf Parent gesetzt, aber habs grade getestet und habe keinen Fehler bekommen :gruebel:

Luckie 22. Jan 2007 14:22

Re: TObjectList: AV wenn OwnsObject := True
 
Das heißt, ich müsste den Destruktor dann trotzdem noch mal überschreiben und dort dann so was machen:
Delphi-Quellcode:
var
  i: Integer;
begin
  for i := 0 to self.Count - 1 do
    self.Items[i].Parent := nil;
  inherited;
Womit ja dann in meinem Fall eine ObjectListe keine weiteren Vorteile zu einer normalen Liste bildet, da ich ja in beiden Fällen den Destruktor überschreiben müsste.

Angel4585 22. Jan 2007 14:36

Re: TObjectList: AV wenn OwnsObject := True
 
Ist das ein großes projekt? Oder kannst du das mal hier als Anhang anheften damit man sich das mal genau anschauen kann?

Edit: Aargh du hast ja ne 3rd party Kompo drinne :wall:

Luckie 22. Jan 2007 14:37

Re: TObjectList: AV wenn OwnsObject := True
 
Noch ist es nicht groß. Aber es verwendet eben eine Fremdkomponente, die man erst installieren müsste. Desweiteren mache ich das für die Firma und ich scheue mich etwas, das hier online zu stellen.

Hawkeye219 22. Jan 2007 14:47

Re: TObjectList: AV wenn OwnsObject := True
 
Michael, wäre Delphi-Referenz durchsuchenTComponentList eine Alternative für dich?

Gruß Hawkeye

Luckie 22. Jan 2007 14:52

Re: TObjectList: AV wenn OwnsObject := True
 
Auch damit bekomme ich eine AV, auch wenn ich im Destruktor den parent auf nil setze:
Delphi-Quellcode:
self.Items[i].Parent := nil;
Das ist irgendwie alles nichts. Ich glaube, ich bleibe doch bei meiner TList. :?

Angel4585 22. Jan 2007 14:57

Re: TObjectList: AV wenn OwnsObject := True
 
Also ich hab jetzt spasseshalber mal alle Komponenten vom Formular hinzugefügt und das ganze freigegeben.. kein Fehler..


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:50 Uhr.
Seite 3 von 4     123 4      

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-2025 by Thomas Breitkreuz