Zu Thema Destroy steht schon etwas gutes in der Hilfe:
| Zitat: |
| Rufen Sie Destroy nicht direkt in einer Anwendung auf, sondern verwenden Sie Free. Die Methode Free überprüft zuerst, ob das Bitmap-Objekt nicht bereits freigegeben wurde, und ruft Destroy nur bei Bedarf auf. |
Free ist besser, da es keine Fehlermeldung ausgibt wenn das Objekt bereits freigegeben wurde. Benutze also nur Free.
Nil brauchst du eigentlich auch nicht. Unter gewissen Umständen, z.B. wenn du mehrmals eine Objektvariable nutzt, so kann es von Vorteil sein die Variable nach dem Free auch Nil zu setzen. Wenn du das Objekt nur mit Free freigibst, dann zeigt die Objektvariable immer noch auf die Instanz (obwohl sie nicht mehr da ist). Wenn du in einer Prozedur dann mit IF Obj <> Nil THEN ... überprüfst ob das Objekt initialisiert worden ist, dann kriegst du eventuell ein falsches Ergebnis. Wenn du aber nach dem Free auch Obj := Nil setzt, dann wird die Obj Adresse gelöscht (bzw. Nil gesetzt). Bei einer IF Obj <> Nil THEN ... bist du dir dann ganz sicher ob das Objekt initialisiert ist oder nicht.
Das ganze brauchst du aber nicht wenn du die Variable nicht mehrmals benutzt. Falsch ist es aber auch nicht.