AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen FreePascal specialize TFPGObjectList : AV bei Free
Thema durchsuchen
Ansicht
Themen-Optionen

specialize TFPGObjectList : AV bei Free

Ein Thema von Alter Mann · begonnen am 2. Apr 2016 · letzter Beitrag vom 3. Apr 2016
Antwort Antwort
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.461 Beiträge
 
Delphi 12 Athens
 
#1

AW: specialize TFPGObjectList : AV bei Free

  Alt 3. Apr 2016, 06:35
Moin...

Du erzeugst die Objektliste mit OwnsObjects = True und gibst im destructor selbst die enthaltenen Bilder wieder frei. Das muß Puff machen... Wenn du die Instanzen selbst verwalten möchtest dann OwnsObjects auf False. Dann würde das mit der Freigabe passen. Dann brauchst du aber auch nicht auf Assigned prüfen. Jeder Listeneintrag ist ein Pointer.
Delphi-Quellcode:
FSmileys := Smileys.Create(True); // OwnsObjects = True
.
.
.
destructor TSmileys.Destroy;
var
  Smiley : TSmiley;
begin
// for Smiley in FSmileys do // diesen Block brauchst du nicht
// if Assigned(Smiley) then
// Smiley.Free; //

  FSmileys.Free;
  inherited Destroy;
end;
..fertsch.
  Mit Zitat antworten Zitat
Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
949 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: specialize TFPGObjectList : AV bei Free

  Alt 3. Apr 2016, 08:00
Ja, sieht ganz so aus.

Ich habe es jetzt so gemacht und es geht
Code:
...
destructor TSmiley.Destroy;
begin
  FPicture.Free;
  inherited Destroy;
end;
...
destructor TSmileys.Destroy;
begin
  FSmileys.Clear;
  FSmileys.Free;
  inherited Destroy;
end;
Danke
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.461 Beiträge
 
Delphi 12 Athens
 
#3

AW: specialize TFPGObjectList : AV bei Free

  Alt 3. Apr 2016, 10:54
Siehst du... again what learned.

Das FSmileys.Clear; kannst du auch weglassen. Das wird beim Free automatisch gemacht. Um Daniel zu zitieren: "Verschwendung von wertvollen Bits und Bytes"
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.667 Beiträge
 
Delphi 12 Athens
 
#4

AW: specialize TFPGObjectList : AV bei Free

  Alt 3. Apr 2016, 11:51
Und es geht noch kürzer:
Delphi-Quellcode:
destructor TSmileys.Destroy;
begin
  FSmileys.Free;
  inherited;
end;
Da der Destruktor dieselbe Signatur hat wie der geerbte, kann der explizite Aufruf entfallen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.461 Beiträge
 
Delphi 12 Athens
 
#5

AW: specialize TFPGObjectList : AV bei Free

  Alt 3. Apr 2016, 13:45
...den hatte ich gar nicht gesehen weil selbstverfreilich.
  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 16:24 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-2025 by Thomas Breitkreuz