Hallo Aya!
Leider geht das ein Wenig durcheinander in diesem Thread!
Compilerschalter dienen dazu, die in "Projekt", "Optionen", "Compiler" möglichen Einstellungen auch direkt im Source vornehmen zu können.
Es gibt globale Schalter, die gelten für eine ganze Datei, und lokale Schalter, die gelten bis zur nächsten Änderung.
Schalter sind z.B.:
A: Ausrichtung der Variablen bei Records: +: ausrichten, -: alle Records als Packed betrachten
B: Boolean auswerten: +: Boolean-Ausdruck immer komplett auswerten, -: nur auswerten, bis eindeutiges Ergebnis vorliegt
Dann gibt es noch weitere Compiler-Direktiven.
Mit $IFDEF, $IFNDEF, $ELSE, $END kan man z.B. mehrere Versionen in einem Source erstellen.
Quelltext
1: 2: 3:
| {$IFDEF test} ArbeitsVerzeichnis := 'C:\testdaten\testprogramm'; {$ENDIF} |
Wird jetzt in "Projekt", "Optionen", Verzeichnisse/Bedingungen" unter "Bedingungen" der String "test" eingetragen, wird die Zuweisung mitcompiliert, sonst nicht. Dadurch kann man z.B. auf eine Testumgebung umschalten, wenn Entwickung und Einsatz eines Programmes auf demselben Rechner erfolgen sollen - und man sich beim Testen die Daten nicht zerstören will.
Weiteres unter "Liste der Compiler-Direktiven" in der OH!
Die Schalter waren bei früheren Turbo-Pascal-Versionen sehr wichtig, weil es da noch keine Einstellungen im Compiler dafür gab.
Auch heute noch aktuell bei Zugriff auf klassische Dateien (Textfile, typisierte Datei): $I! Dabei gibt es keine Exception-Meldung in der IDE.
Aber wer greift schon mühsam Satz für Satz auf die Festplatte zu, wenn er die Datei doch mit einer "LoadFromFile"-Anweisung blitzschnell und ohne Programmieraufwand (gibbet da eigentlich auch ne Komponente für, bin zu faul, die Zeile zu tippen

) komplett in den Hauptspeicher laden kann - notfalls schreiben wir eben in die Systemvorraussetzungen: mindestens 700GByte RAM
Gruß
Dietmar Brüggendiek