Thema: Delphi Thread Error

Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.115 Beiträge
 
Delphi 11 Alexandria
 
#10
  Alt 19. Nov 2002, 23:21
Moin Daniel,

wenn Du immer sicherstellst, dass OnClose auch aufgerufen wird ist der gibt's eigentlich keinen Unterschied.
Solltest Du aber auch nur mal ein Formular dynamisch erzeugen, und mit Free wieder freigeben hast Du den Salat, wenn Du Deine Aufräumarbeiten im OnClose erledigen willst. Das wird dann nämlich auch nicht aufgerufen.

Wenn man immer genau aufpasst, dass die belegeten Resourcen immer wieder sauber freigegeben werden spielt der Zeitpunkt natürlich keine Rolle, an dem das geschieht.

Ich halte es allerdings für eine Verringerung der Fehlerwahrscheinlichkeit, wenn man sich für so etwas an Stellen gewöhnt, die bei einem normalen Programmablauf auch garantiert aufgerufen werden.

Soll heissen:
Werden Resourcen belegt (z.B. durch Create, so es sich denn nicht um eine Komponente mit Angabe des Owners handelt), gehört als nächstes ein try/finally Block gesetzt.
Oder Resourcen werden in OnCreate/OnDestroy bzw. initialization/finalization Paaren belegt/freigegeben.

Es mag natürlich immer mal Ausnahmen von der Regel geben, aber wo dieses nicht zwingend notwendig ist, halte ich es für sinnvoll diese Regeln für saubere Programme einzuhalten.
Manchmal kann man auch feststellen, dass man ein strukturelles Problem mit seinem Programm hat, wenn sich so eine Regel nicht einhalten lässt.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat