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....

Units und Libraries

Um die Anwendung von wiederverwendbarem Code einfacher und übersichtlicher zu machen, verwendet man Softwarebibliotheken (unter Delphi "unit" und "library" genannt). Diese Bibliotheken enthalten eine Sammlung von Routinen die mehr oder weniger zusammen gehören, und meist thematisch geordnet sind. So gibt es Mathematik-Bibliotheken, oder Statistik-Bibliotheken, oder Bibliotheken zur Bearbeitung von chemischen Formeln.

Die Struktur eine Bibliothek ist immer gleich: Jede Bibliothek besteht aus einem Interface-Teil, indem alle Deklarationen stehen, die von außen angesprochen werden dürfen, und aus einem Implementation-Teil, der jene Teile des Codes enthält, der "geheim" bleiben soll. Diese Vorgangsweise hat den Vorteil, dass es eine klare Schnittstelle zwischen "innen" und "außen" gibt, so dass der Anwender die Implementierung gar nicht kennen muss (und meist auch gar nicht kennen will), um die Bibliothek zu benützen.

Der Interface-Teil wird mit dem Schlüsselwort interface eingeleitet und ist so lange gültig bis das Schlüsselwort implementation auftritt. Ab hier ist dann der Code nicht mehr von außen zugänglich. Im Interface-Teil stehen alle Konstanten, Typdeklarationen und Variablen, die öffentlich zugänglich sein sollen. Außerdem enthält der Interface-Teil die Köpfe von öffentlichen Prozeduren, Funktionen und Klassen (LINK).

Jede Bibliothek wird durch das Statement unit oder library mit einem passenden Namen eingeleitet. Der Unterschied zwischen unit und library liegt darin, dass mit unit ein Delphi-kompatibles Bibliotheksmodul geschaffen wird, mit library hingegen eine Standard-Windows-DLL. Gibt es keine schwerwiegenden Gründe die gegen eine Unit sprechen, sollte man immer Units erzeugen, da diese nahtlos in das Delphi-Environment integriert sind und mit dem geringsten Aufwand benützt werden können.

Nach der Deklaration des Namens folgt der Interface-Teil. Im Interface-Teil werden zuerst mit Hilfe des uses-Statements alle Bibliotheken aufgelistet, auf die die Unit zurückgreift. Danach folgen beliebige öffentliche Deklarationen, wobei von Prozeduren, Funktionen und Klassen nur jeweils der Kopf (in Kopie) öffentlich gemacht wird. Der Körper dieser Strukturen befindet sich immer im Implementation-Teil.

Der Implementation-Teil ist strukturell ähnlich wie der Interface-Teil aufgebaut, nur enthält dieser zusätzlich sämtlichen privaten, von außen nicht sichtbaren Code. Im Implementation-Teil wird das uses-Statement nochmals benützt um Units einzubinden, die im Interface nicht benötigt werden. Generell sollte man so viele Units wie möglich in das uses der Implementation schreiben, um zyklische Referenzen von vorneherein zu vermeiden.

Am Ende der Unit steht noch ein optionaler Initialisierungscode, der für jede Unit beim Start des Programms, das diese Unit verwendet, ausgeführt wird. Dieser Code wird typischerweise zur Initialisierung von globalen Variablen eingesetzt.

Last Update: 2008-09-09