AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Record zu TStringlist hinzufügen

Record zu TStringlist hinzufügen

Ein Thema von EWeiss · begonnen am 12. Jun 2017 · letzter Beitrag vom 14. Jun 2017
Antwort Antwort
Seite 10 von 10   « Erste     8910
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
7.159 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#91

AW: Record zu TStringlist hinzufügen

  Alt 14. Jun 2017, 12:19
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:
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;
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von EWeiss
EWeiss

Registriert seit: 16. Okt 2010
6.373 Beiträge
 
Delphi 2010 Architect
 
#92

AW: Record zu TStringlist hinzufügen

  Alt 14. Jun 2017, 12:23
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 ops.. dritte hab ich nicht gefunden.

gruss
  Mit Zitat antworten Zitat
TiGü
Online

Registriert seit: 6. Apr 2011
Ort: Berlin
2.096 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#93

AW: Record zu TStringlist hinzufügen

  Alt 14. Jun 2017, 12:26
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!
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
1.217 Beiträge
 
Delphi 2007 Professional
 
#94

AW: Record zu TStringlist hinzufügen

  Alt 14. Jun 2017, 12:27
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.
  Mit Zitat antworten Zitat
Benutzerbild von EWeiss
EWeiss

Registriert seit: 16. Okt 2010
6.373 Beiträge
 
Delphi 2010 Architect
 
#95

AW: Record zu TStringlist hinzufügen

  Alt 14. Jun 2017, 12:29
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

Geändert von EWeiss (14. Jun 2017 um 15:03 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 10 von 10   « Erste     8910

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 15:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf