Delphi-PRAXiS
Seite 10 von 10   « Erste     8910   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Record zu TStringlist hinzufügen (https://www.delphipraxis.net/193030-record-zu-tstringlist-hinzufuegen.html)

jaenicke 14. Jun 2017 12:19

AW: Record zu TStringlist hinzufügen
 
Wer hat denn geschrieben, dass du in dem Destroy eines einzelnen (!) TSprite auf die Liste aller (!) Sprites zugreifen sollst? Ich hatte doch schon geschrieben wie es aussehen muss:
Zitat:

Zitat von jaenicke (Beitrag 1374492)
So:
Delphi-Quellcode:
type
  TSprite = class
  ...
  public
    destructor Destroy; override;
  end;

destructor TSprite.Destroy;
begin
  inherited;
  if h_Bitmap <> 0 then
  begin
    DeleteObject(h_Bitmap);
    h_Bitmap := 0;
  end;
end;

// und dann an deiner Stelle nur noch:
      Sprites.Free;


EWeiss 14. Jun 2017 12:23

AW: Record zu TStringlist hinzufügen
 
Zitat:

Zitat von TiGü (Beitrag 1374520)
Du darfst NICHT die Liste im Destroy des einzelnen Listen-Elements freigeben!!!
Du sägst dir den Ast ab, auf dem du sitzt!

Sorry, aber dir fehlen die banalsten Grundlagen in Objekt-Orientierter-Programmierung!

Woran siehst du das ich diese freigebe?
Sorry aber lese einfach nochmal was ich freigebe Das HBitmap mehr nicht.
Das ich Destroy definieren soll kam nicht von mir.

Also Lesen!
Bitte und jetzt schreib :roteyes::spin2: ops.. dritte hab ich nicht gefunden.

gruss

TiGü 14. Jun 2017 12:26

AW: Record zu TStringlist hinzufügen
 
Zitat:

Zitat von EWeiss (Beitrag 1374523)
Zitat:

Zitat von TiGü (Beitrag 1374520)
Du darfst NICHT die Liste im Destroy des einzelnen Listen-Elements freigeben!!!
Du sägst dir den Ast ab, auf dem du sitzt!

Sorry, aber dir fehlen die banalsten Grundlagen in Objekt-Orientierter-Programmierung!

Woran siehst du das ich diese freigebe?
Sorry aber lese einfach nochmal was ich freigebe Das HBitmap mehr nicht.
Das ich Destroy definieren soll kam nicht von mir.

Einfach genauso machen wie jaenicke das in Beitrag #91 zeigt!

Blup 14. Jun 2017 12:27

AW: Record zu TStringlist hinzufügen
 
Sprites.Free hat keinen Rückgabewert, kann also nicht nil sein.
Der Wert in der Variablen "Sprites" ist nach dem Free einfach ungültig, da er auf ein nicht mehr existierendes Objekt verweist.

Im Destroy des einzelnen Sprite hast du doch überhaupt keine Kenntnis von der Liste.
Du gibst doch nur das lokale Handle frei.
Der Test auf 0 ist vor dem DeleteObject überflüssig.
Ebenso die nachfolgende Zuweisung von 0, da nach dem Destructor das Objekt nicht mehr existiert.
Delphi-Quellcode:
destructor TSprite.Destroy;
begin
  DeleteObject(h_Bitmap);
  inherited;
end;

Sprites.Free; // gibt die Liste frei, die Liste gibt die Objekte frei, jedes Objekt sein Handle
// Keine Schleife einfach fertig.

EWeiss 14. Jun 2017 12:29

AW: Record zu TStringlist hinzufügen
 
Ok dann habe wir das jetzt geklärt..
Der Gwinner ist @jaenicke ;)

Danke an Blup, TiGü
Aber gut man kann nicht alles wissen hab mit der TObjectList bisher noch nie gearbeitet.
Das hat nix mit OOP Programmierung zu tun. (brauch ich auch nicht unbedingt mit WIN32API Programmierung)

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:20 Uhr.
Seite 10 von 10   « Erste     8910   

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