Beispiel:
Delphi-Quellcode:
uses
IniFiles;
procedure TForm1.Button1Click(Sender: TObject);
var
Path, FileName: String;
IniFile: TIniFile;
s: String;
begin
Path := ExtractFilePath(ParamStr(0)); //hat schon ein Backslash am Ende
Path := IncludeTrailingPathDelimiter(Path); //braucht man hier nicht, wenn man sich aber unsicher ist, ist es nicht falsch
FileName := 'Einstellungen.ini';
//Erstellt falls nötig den Unterordner
if not ForceDirectories(Path + 'INI') then
begin
MessageDlg('Es wurde kein Unterordner angelegt', mtError, [mbOK], 0);
Exit;
end;
//Alternative: Prüft auf Unterordner
{if not DirectoryExists(Path + 'INI') then
begin
MessageDlg('Es wurde kein Unterordner gefunden', mtError, [mbOK], 0);
Exit;
end; }
IniFile := TIniFile.Create(Path + FileName);
try
IniFile.WriteString('Sektion', 'Ident', 'Wert');
s := IniFile.ReadString('Sektion', 'Ident', 'Ersatzwert bei Fehler');
finally
IniFile.Free;
end;
ShowMessage(s);
end;
Ini ist eine ganz normale Klasse, sie unterschiedet sich von den meisten vielleicht dadurch, dass man in Create ein Pfad angeben muss. Experimentiere nicht mit dem Pfad, sondern liefere etwas mit Hand und Fuß. Wenn du keine Ahnung hast was für ein Pfad du angibst, dann weißt du auch nicht wo die Ini landet.
Das sieht nicht gut aus:
ExtractFilePath(ParamStr(0)) + './ini/einstellungen.ini';
ExtractFilePath liefert immer ein Backslash am Ende, also z. B. c:\Temp\Übungen\Projekt1\. Du brauchst also nach ExtractFilePath keinen Backslash angeben (schon gar nicht ein Slash).
Bist du nicht sicher ob am Ende ein Backslash ist, überprüfe es oder verwende die Funktion
IncludeTrailingPathDelimiter
. Sie macht nichts kaputt, man kann sie zur Not also immer verwenden. Wenn da bereits ein Backslash am Ende ist, wird nichts gemacht, sonst Backslash angefügt.
Willst du es in einen Ordner schrieben, dann in der Form:
ExtractFilePath(ParamStr(0)) + 'ini/einstellungen.ini';
. Wie gesagt, ExtractFilePath liefert am ende immer einen Backslash.
Fehlt der Ordner "Ini\", gibt es eine Fehlermeldung. Also vorher vergewissern ob der Ordner existiert. Oder mit
ForceDirectories
erstellen.
Der Rest ist üblich wie bei anderen Klassen: Objekt deklarieren und erstellen, mit Objekt arbeiten, zuletzt IniFile Objekt freigeben.