Home » Tutorials » Object Pascal/RTL » Includedateien und Units

Includedateien und Units

Arbeiten mit den „Sammlungs“dateien

1. Anlegen einer Includedatei

Das Anlegen einer Includedatei ist ganz einfach:

  1. Datei|Neu|Textdatei aufrufen. Es wird eine leere Textdatei angezeigt.
  2. In diese leere Datei gibst du einfach den Quelltext ein, der in dieser Datei verwaltet werden soll. Ein Beispiel hast du einige Zeilen weiter oben.
  3. Danach speicherst du die Includedatei ab. Günstig ist es, wenn du ihr einen Namen mit der Endung .inc gibst. Ich mache das so. Du kannst es ganz anders machen. Jede Endung wird angenommen (auf vorhandene Dateiendungen achten!).

Also:
Zuerst rufst du Speichern unter auf.
Hier stellst du den Dateityp Alle Dateien (*.*) ein.
Du gibst den Namen mit der Endung ein (siehe oben).
Du klickst jetzt auf Speichern.
Um die Includedatei als Beispiel einsetzen zu können, fügen wir nicht unsere Sammlung von Daten vom Anfang (aus (1) ) ein. Wir schreiben vielmehr an dieser Stelle:

const
  stLeer = '?';  stNull = #86;  stStern = 'J'; stKreuz = 'Ó';

und speichern diese Datei unter IncWing2.inc ab.
Jetzt ist die Includedatei zur Verwendung bereit.

2. Einbinden einer Includedatei in das Delphi-Projekt

Das Einbinden der Includedatei in den Quelltext des Programms ist ganz einfach:
Da der Inhalt der Includedatei ein Ausschnitt aus dem fortlaufenden Quelltext des Programms ist, wird der Compiler mit der Compilerdirektive

{$I Dateiname.inc}

an der Stelle in den Quelltext eingebunden, an der sonst der Inhalt dieser *.inc-Datei stehen würde.
Ein Ausschnitt aus einem Programm:

const
  SpAnz = 24;  (* Wert nicht verändern !! *)
  ZlAnz = 14;  (* Wert nicht verändern !! *)

type
  tStein =
    (leer, null, stern, kreuz);
  tFeld = ARRAY[0..SpAnz-1,0..ZlAnz-1] of tStein;

(* -------------------------------------------------------------------
   Originaleinstellung:
   Spielfeld.Font = Wingdings 2 + {$I IncWing2.inc}
   Ersatzeinstellung (wenn Wingdings 2 nicht vorhanden):
   Spielfeld.Font = Wingdings + {$I IncWing1.inc}
   ------------------------------------------------------------------ *)

//Wenn Spielfeld.Font = Wingdings 2 dann

{$I IncWing2.inc}

(* -------------------------------------------------------------------
   Includedateien verteilen den Quellcode einer Unit auf mehrere
   Dateien. Units dagegen dienen zur modularen Gestaltung eines
   Delphi-Programmprojektes.
   Die Parameter-Direktive $I weist den Compiler an, die angegebene
   Datei in die Compilierung aufzunehmen. Diese Datei wird direkt
   nach der Direktive {$I Dateiname} in den Text eingefügt.
   ------------------------------------------------------------------- *)

const
  Stein: array [tStein] of Char =
    (stLeer, stNull, stStern, stKreuz);

var
  Count: Integer;
  Namen: String;

Damit ist es leicht möglich, vor dem endgültigen Compilieren durch Auswahl der entsprechenden Inc-ludedatei die Bildschirmausgabe an die Gegebenheiten des Computers anzupassen.

3. Anlegen einer Unit-Datei

Wenn du Formulare für deine Anwendung entwickelst, erzeugt Delphi ohne dein Zutun, also automatisch, neue Units, die mit dem Formular verbunden sind. Wenn du beispielsweise ein Dialogfeld in das Formular einfügst, setzt Delphi die Unit Dialogs in die Uses-Liste unterhalb von Interface in der Formular-Unit ein. Damit werden alle Programmdaten bereitgestellt, die zum Funktionieren dieses Dialogfeldes gebraucht werden. Auf die wenigen Ausnahmen, bei denen du selbst Unitnamen in die Liste einfügen musst, kommen wir noch.
Units müssen nicht immer mit Formularen verbunden sein. Du kannst auch eigene Units erzeugen, in denen du ausschließlich deine Daten verwalten kannst. Mehr dazu im weiteren Verlauf dieses Tutorials.
So eine eigenentwickelte Unit könnte vielleicht dazu dienen, die unter (2) angeführte Bedingung in deinem Programm umzusetzen?
Ehe wir hier viel Herumprobieren, will ich folgendes dazu schreiben:
Da Units – wie weiter vorn bereits beschrieben – ein Programm in einzelne Module aufteilen, es also in bestimmter Weise gliedern, würden wir bei der Lösung unseres Problems „mit Kanonen auf Spatzen schießen“. Es gilt ja, eine Auswahl aus zwei Möglichkeiten zu treffen. Eine Gliederung soll nicht erreicht werden. – An dieser Stelle nicht mehr dazu.
Im folgenden Abschnitt wollen wir uns mit Wesen und Wirklichkeit der Unit-Dateien etwas genauer befassen.