Sign in Join
Wiki copytemporary

ExitProc/de: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: ExitProc/de

OldNewLine
1+# ExitProc
2+
3+**ExitProc**, kann man eine Procedure zuweisen, welche bei Programm-Ende aufgerufen wird.\
4+Auch bei Beendigungen durch eine Laufzeitfehler.\
5+\
6+Es wird empfohlen die alte **ExitProc** zu sichern, und dies bei der neuen **ExitProc** wieder aufzurufen.
7+
8+## Beispiel
9+
10+In diesem Beispiel, wird bewusst eine Datei geöffnet, welche es nicht gibt.
11+
12+``` pascal
13+program ExitProc_Example;
14+
15+const
16+ MyExitCode = 123;
17+
18+var
19+ OldExitProc: Pointer;
20+
21+ procedure Ende;
22+ begin
23+ WriteLn('Das ist das Ende');
24+ case ExitCode of
25+ 2: begin
26+ WriteLn('Datei nicht gefunden');
27+ end;
28+ MyExitCode: begin
29+ WriteLn('Es wurde bewusst mit ', MyExitCode, ' abgebrochen');
30+ end;
31+ else begin
32+ WriteLn('Fehler: ', ExitCode);
33+ end;
34+ end;
35+ ExitProc := OldExitProc;
36+ end;
37+
38+var
39+ f: file;
40+
41+begin
42+ // Alte ExitProc sichern.
43+ OldExitProc := ExitProc;
44+
45+ // Neue ExitProc zuweisen.
46+ ExitProc := @Ende;
47+
48+ // Eine Datei öffnen, welche es nicht gibt.
49+ Assign(f, 'abc.txt');
50+
51+ // Dies löst einen Laufzeitfehler 2 aus.
52+ Reset(f);
53+
54+ // Mit eigenem Code abbrechen.
55+ Halt(MyExitCode);
56+
57+end.
58+```
59+
60+# ExitCode
61+
62+**ExitCode** gibt den Fehlercode an, mit welchen der Abbruch kommt. In der Regel, wen **ExitCode** 0 ist, wurde das Programm normal beendet.
63+
64+## Durch Laufzeitfehler
65+
66+ZB. bei einer Bereichsüberschreitung bekommt **ExitCode** 201.
67+
68+``` pascal
69+var
70+ a: array[0..3] of byte;
71+
72+begin
73+ OldExitProc := ExitProc;
74+ ExitProc := @Ende;
75+
76+ // Bereich bewusst überschritten.
77+ a[4] := 12;
78+```
79+
80+## Mit erzwungenem Ende
81+
82+Wen man ein Programm-Ende mit **Halt()** erzwingt, wird **ExitProc** trotzdem aufgerufen.\
83+Wen man Halt(num), dann wird **num** als **ExitCode** interpretiert. In diesem Beispiel hat dann der **ExitCode** 123.
84+
85+``` pascal
86+ Halt(123);
87+```
88+
89+## Siehe auch
90+
91+- [[AddExitProc/de|AddExitProc]] - Programm-Ende in einer ExitProc-List zufügen.
92+
93+Autor: Mathias
94+
95+---
96+*From the Free Pascal wiki, page "ExitProc/de", as it stood on 2020-05-19 after a change by FTurtle, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history