Buchempfehlung
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
"Der" Petzold, das über 1000 Seiten starke Standardwerk zum Win32-API - besonders nützlich u. a. bei der GUI-Programmierung in FreeBASIC! [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Referenz - DESTRUCTOR (Module)

Referenz-Navigation

 

Syntax: [PUBLIC | PRIVATE] SUB name [ALIAS "externer_name"] [()] DESTRUCTOR [priorität] [STATIC]
Typ: Klausel
Kategorie: Programmablauf

Die Klausel DESTRUCTOR bewirkt, dass eine SUB aufgerufen wird, bevor das Programm beendet wird. Dies geschieht sowohl dann, wenn eine BefehlsreferenzeintragEND-, BefehlsreferenzeintragSYSTEM-, oder BefehlsreferenzeintragSTOP-Anweisung aufgerufen wird, als auch, nachdem die letzte Anweisung des Hauptmoduls ausgeführt wurde. Wurde per Kommandozeile die Fehlerbehandlung aktiviert, so werden die Destruktoren auch aufgerufen, wenn ein nicht-planmäßiges Programmende auftritt; siehe dazu BefehlsreferenzeintragDer Compiler.

Siehe auch BefehlsreferenzeintragSUB für Details zu Prozeduren.

Werden in einem Modul mehrere Destruktoren ohne Priorität verwendet, so werden diese im Code von oben nach unten abgearbeitet.

Eine solche SUB muss nur dann durch eine BefehlsreferenzeintragDECLARE-Anweisung deklariert werden, wenn sie im Programmverlauf nochmals manuell aufgerufen werden soll. Wird sie mit einer normalen DECLARE-Zeile deklariert, so kann sie - wie eine ganz normale SUB - im Programm jederzeit aufgerufen werden und folgt den Regeln einer normalen Prozedur.

Wird versucht, eine SUB mit der DESTRUCTOR-Klausel zu belegen, die einen oder mehrere Parameter besitzt, so wird ein Compiler-Fehler erzeugt.

Innerhalb eines Modules können mehrere Destruktoren verwendet werden. Innerhalb mehrerer Module können ebenfalls zusätzliche Destruktoren eingefügt werden, unter der Voraussetzung, dass keine zwei PUBLIC-Destruktoren mit demselben Bezeichner existieren.

Wenn mehrere Module compiliert werden, die Destruktoren besitzen, kann die Reihenfolge der Ausführung der Destruktoren nicht garantiert werden, solange keine Priorität angegeben wurde. Darauf muss besonders geachtet werden, wenn die Destruktoren eines Moduls eine Prozedur eines anderen Moduls aufrufen, das ebenfalls einen Destruktor besitzt. Es wird empfohlen, einen einzigen Destruktor zu definieren, der die Prozeduren in den einzelnen Modulen manuell aufruft.

Beispiel:
Dieses Beispielprogramm enthält ein Set aus vier Konstruktoren und Destruktoren. Es wird gezeigt, in welcher Reihenfolge diese abgearbeitet werden.

Sub Constructor1 Constructor 101
    Print "Constructor1 aufgerufen - hoechste Prioritaet"
End Sub
Sub Constructor2 Constructor 201
    Print "Constructor2 aufgerufen - niedrigere Prioritaet"
End Sub
Sub Constructor3 Constructor
    Print "Constructor3 aufgerufen - ohne Prioritaet"
End Sub
Sub Constructor4 Constructor
    Print "Constructor4 aufgerufen - ohne Prioritaet"
End Sub

'-------------------------------------------------------

Sub Destructor1 Destructor 101
    Print "Destructor1 aufgerufen - niedrigeste Prioritaet"
    Sleep 'Auf Tastendruck warten
End Sub
Sub Destructor2 Destructor 201
    Print "Destructor2 aufgerufen - hoehere Prioritaet"
End Sub
Sub Destructor3 Destructor
    Print "Destructor3 aufgerufen - ohne Prioritaet"
End Sub
Sub Destructor4 Destructor
    Print "Destructor4 aufgerufen - ohne Prioritaet"
End Sub

'-------------------------------------------------------

Print "Modul-Level Code"

Unterschiede zu QB: neu in FreeBASIC

Unterschiede zu früheren Versionen von FreeBASIC:

Siehe auch:
BefehlsreferenzeintragCONSTRUCTOR (Module), BefehlsreferenzeintragSUB, BefehlsreferenzeintragDESTRUCTOR (Klassen), BefehlsreferenzeintragProzeduren


Zusätzliche Informationen und Funktionen
  • Der Referenzeintrag wurde am 17.07.2007 von Redakteurnemored angelegt.
  • Die aktuellste Version wurde am 19.01.2013 von Redakteurnemored gespeichert.
  Versionen Versionen