Der Epina Delphi-Kurs bietet Ihnen eine allgemeine Einführung in das Programmieren mit Delphi/Pascal. Mit vielen ausgearbeiteten Beispielen können Sie direkt in die Delphi-Programmierung einsteigen. Mehr dazu finden Sie hier....

Geltungsbereich und Sichtbarkeit von Deklarationen

Der Geltungsbereich von Variablen, Konstanten und Typdeklarationen kann vom Programmierer festgelegt werden, wobei im Wesentlichen globale und lokale Definitionen eingesetzt werden können. Globale Definitionen sind für das gesamte Modul (unit) gültig, lokale jeweils nur für das jeweilige Unterprogramm.

Als generelle Regel gilt, dass man versuchen sollte, so wenig globale Definitionen wie möglich einzusetzen. Je weniger globale Variablen verwendet werden, desto kleiner ist die Gefahr von "unerwünschten Nebenwirkungen".

Aus technischer Sicht werden globale Variable immer im (statischen) Datenbereich des Programm gespeichert, während lokale Variable meist am Stack eines Unterprogramms angelegt werden. Dadurch "verschwinden" die lokalen Variablen beim Verlassen des Unterprogramms (da ja der Stackbereich wieder freigegeben wird). Man kann also nicht erwarten, dass eine lokale Variable zu Beginn eines Unterprogramms denselben Wert aufweist, auf den sie beim vorigen Aufruf gesetzt wurde.

Hinweis: Man sollte sich immer im Klaren sein, dass es aus verschiedenen Gründen einige systemweite globale Variablen gibt, die schon vordefiniert sind und massive Auswirkungen haben können, falls man (unabsichtlich) diese Variablen ändert. Eine dieser Variablen ist die Variable FileMode, die das Lese- und Schreibverhalten von Dateizugriffen bestimmt.

Im Gegensatz zum Geltungsbereich von Definitionen, handelt es sich bei der Sichtbarkeit von Definitionen um ein anderes Konzept, dass den Zugriff auf diese von außen regelt. Grundsätzlich gilt, dass die Sichtbarkeit nur für globale Definitionen eingestellt werden kann, lokale Definitionen sind von außen nie zugreifbar. Für globale Definitionen kann die Sichtbarkeit eingestellt werden, indem man die jeweilige Definition entweder im interface-Teil oder im implementation-Teil eines Moduls platziert.

Persönl. Anmerkung: Ich habe mir zur Gewohnheit gemacht, alle Teile eines Programmmoduls (unit), die im interface-Bereich definiert sind immer auch zu dokumentieren. Das ist zwar deutlich mehr Arbeit, zahlt sich aber auf längere Sicht aus, da man viele Routinen und Klassen in späteren Projekten wieder gewinnbringend einsetzen kann. Durch diese Vorgangsweise bekommt man eine Bibliothek von Routinen, die helfen, die eigene Effizienz massiv zu steigern.

Last Update: 2008-09-09