Meine Lösung für alle die es interessiert:
Delphi-Quellcode:
unit classIni;
interface
uses
SysUtils, IniFiles;
type
TMemIniFile_ =
class(TMemIniFile)
private
FAutoSave: Boolean;
public
constructor Create(
const FileName:
string;
const AutoSave: Boolean = True);
overload;
constructor Create(
const FileName:
string;
const Encoding: TEncoding;
const AutoSave: Boolean = True);
overload;
destructor Destroy;
override;
end;
implementation
{TMemIniFile}
constructor TMemIniFile_.Create(
const FileName:
string;
const Encoding: TEncoding;
const AutoSave: Boolean = True);
begin
inherited Create(FileName, Encoding);
FAutoSave := AutoSave;
end;
constructor TMemIniFile_.Create(
const FileName:
string;
const AutoSave: Boolean = True);
begin
inherited Create(FileName);
FAutoSave := AutoSave;
end;
destructor TMemIniFile_.Destroy;
begin
if FAutoSave
then
UpdateFile;
inherited;
end;
end.
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
IniF: TCustomIniFile;
begin
IniF := TMemIniFile_.Create('.....', False);
try
IniF.WriteString('section', 'ident', 'value');
finally
IniF.Free;
end;
Info zum Parameter False:
da sollte natürlich nicht einfach nur False stehen, da es nicht wirklich Sinn ergibt.
Mein Problem bestand darin, dass mein Programm keine Ini-Dateien schreiben soll, wenn es im aktuellen Verzeichnis keine Schreibrechte hat.
Das prüft mein Programm beim start und setzt ggf. eine globale Variable (eigene
Unit, Record) auf False. Diese Variable übergebe ich dann als zweiten "AutoSave"-Parameter.
Wer mindestens Berlin hat, braucht das nicht.
Gefunden hier:
http://www.delphipraxis.net/1352811-post18.html, von Fritzew