Initialisierungsdateien (kurz INI-Dateien) sind Textdateien mit einem einfachen Format zur Darstellung von Daten. Dabei werden alle Daten einem Abschnitt (section
) zugeordnet. Jeder Abschnitt wiederum enthält verschiedene Schlüssel (keys
) mit Werten (values
). Dabei lässt sich eine Information über das Tupel (section, key)
eindeutig identifizieren.
INI-Dateien enthalten keine Typinformationen. Somit muss der Datentyp einer Information vom Programm (welches die INI-Datei verwendet) anhand von Abschnitt und Schlüssel bekannt sein. INI-Dateien werden häufig von Desktopanwendungen verwendet, um Einstellungs- bzw. Konfigurationsdaten zu speichern.
In Command & Conquer Red Alert wurden spielinterne Daten (Bewaffnung einer Einheit, Schaden einer Waffe, Baukosten usw.) in einer rules.ini
gespeichert.
Hier ein Ausschnitt aus der rules.ini
:
; vehicle mounted machine gun [M60mg] Damage=15 ROF=20 Range=4 Projectile=Invisible Speed=100 Warhead=SA Report=PILLBOX1 Anim=MINIGUN ; napalm bomblets (dropped from plane) [Napalm] Damage=100 ROF=20 Range=4.5 Projectile=Bomblet Speed=5 Warhead=Fire ; Tesla coil zap [TeslaZap] Damage=100 ROF=120 Range=8.5 Projectile=Invisible Speed=100 Warhead=Super Report=TESLA1 Charges=yes
Der Bezeichner jedes Abschnittes wird dabei zwischen [
und ]
angegeben. Für diesen Bezeichnet gibt es keine (mir bekannte) Festlegung. Jedoch bieten sich die Buchstaben a-z, A-Z, die Ziffern 0-9 sowie _
an. Auf exotische Sonderzeichen oder gar [
, ]
, =
sollte verzichtet werden. Ebenso sind ;
(und häufig auch #
) verboten, da diese für Kommentare verwendet und somit von INI-Parsern nicht ausgewertet werden. Außerdem sollte jeder Abschnittsname nur einmal pro INI-Datei verwendet werden, um die eindeutige Identifizierbarkeit zu gewährleisten.
Die Schlüssel jedes Abschnittes sollten der gleichen Restriktion unterliegen, d.h. eindeutig bezüglich des aktuellen Abschnitts sein. Schlüssel und Wert werden durch =
getrennt. Am Ende des Wertes folgt ein Zeilenumbruch.
Durch diesen einfachen Aufbau, lassen sich INI-Dateien mithilfe von assoziativen Arrays implementieren.