Einzelnen Beitrag anzeigen

a.def
(Gast)

n/a Beiträge
 
#16

AW: Ini-Writes global abfangen?

  Alt 10. Apr 2017, 15:38
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
  Mit Zitat antworten Zitat