Implizite Programm-Module

Aus Wiki des Deutschsprachige Xbaseentwickler e. V.
Version vom 17. Juni 2013, 15:54 Uhr von Manfred (Diskussion | Beiträge) (→‎Programm-Start)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Programmstart und -ende

Programm-Start

Jedes Xbase++-Programm durchläuft eine Anzahl von Funktionen, die als initiale Startsequenz betrachtet werden können. Vier dieser Funktionen sind zwingend, weitere optional.

Die Reihenfolge und die Funktionen sind:



Die drei ersten Funktionen sind in der Xbase++-Laufzeitumgebung vorhanden und werden von dort geladen, wenn der Programmierer keine eigenen Funktionen dieses Namens definiert hat.

Vom Programmierer benannte INIT PROCEDUREs werden in einer willkürlichen Reihenfolge abgearbeitet, ehe Main() aufgerufen wird.

Die Funktion Main() muss vom Programmierer vorgegeben werden, da sie explizit von der Xbase++-Laufzeitumgebung angefordert wird: wenn sie fehlt, schlägt das Linken des Programms fehl.

Programm-Ende

Es gibt keine zwingende Funktion, die am Programm-Ende ausgeführt wird, es steht dem Programmierer jedoch frei, über EXIT PROCEDUREs bestimmte Abläufe am Programm-Ende auszuführen.


Reihenfolge der Start-Funktionen

Als erstes wird ErrorSys() aufgerufen, um sicherzustellen, dass eine Fehlerbehandlung definiert ist, wenn (gerade auch beim Programmstart) ein Programmfehler auftritt.

Danach wird AppSys() aufgerufen, um ein Anwendungsfenster zu erzeugen, das als zentraler Punkt des Programms fungiert.

Danach wird über DbeSys() der Zugriff auf DBEs und Compound DBEs eingerichtet.

Alle drei Funktionen sind in gleichnamigen Programm-Quellen hinterlegt. Die Programm-Quellen findet man in \XppW32\Source\Sys.

Will man z.B. ein Programm ohne Datenzugriff (oder Datenzugriff über SQL oder ODBC), kann auch eine leere DbeSys-Funktion verwendet werden:

FUNCTION DBESys()
   //
RETURN(.T.)

Dies gilt analog auch für ErrorSys() (wo es sich nicht empfiehlt), und für AppSys().