Also ich habe 2 Procedures zum lesen und schreiben in/aus Inis:
Delphi-Quellcode:
{-----------------------------------------------------------------------------
Description: Schreibt in eine INI
Procedure: schreibeini
Arguments: pfad:string
Result: None
Detailed description:
-----------------------------------------------------------------------------}
procedure schreibeini(pfad:string);
const endung='.ini';
var ini:TInifile;
i:integer;
procedure writeValues(comp:Tcomponent);
var i:integer;
begin
with comp do
for i:=0 to ComponentCount -1 do
begin
if Components[i] is TCheckBox then
ini.WriteBool(comp.Owner.Name+' '+comp.Name+' '+Components[i].ClassName,Components[i].Name,TCheckBox(Components[i]).Checked);
end;
end;
begin
try
if pfad='' then
pfad:=ExtractFilePath(Application.ExeName)+dateToStr(now)+' '+inttostr(hourof(now))+' Uhr und '+inttostr(minuteof(now))+' Minuten'+endung
else //macht doppelte endungen weg
DelDubbleExtension(pfad,endung);
//hier schreibt er alle Einstellungen in die Ini Datei,
// egal ob die Datei vorher schon Existiert hat, es wird einfach überschrieben
//hier in der ersten zeile wird die Ini datei mit create kreiert
ini:=tinifile.Create(pfad);
//hier läuft er alle Komponenten von Form1 durch und speichert die Werte
writeValues(form1);
except
showmessage('Es konnte keine Datei erstellt werden!'+chr(13)+
'Falls Sie das Programm von CD Starten kopieren Sie bitte die *.exe auf ihre Festplatte und starten Sie erneut!');
end;
ini.Free;
end;
{-----------------------------------------------------------------------------
Description: Liest aus einer INI
Procedure: leseini
Arguments: pfad:string
Result: None
Detailed description:
-----------------------------------------------------------------------------}
procedure leseini(pfad:string);
var ini:TInifile;
i:integer;
procedure readValues(comp:Tcomponent);
var i:integer;
begin
with comp do
for i:=0 to ComponentCount -1 do
begin
if Components[i] is TCheckBox then
TCheckBox(Components[i]).Checked:=ini.readBool(comp.Owner.Name+' '+comp.Name+' '+Components[i].ClassName,Components[i].Name,TCheckBox(Components[i]).Checked);
end;
end;
begin
ini:=tinifile.Create(pfad);
try
if fileexists(pfad) then
begin
//hier läuft er alle Komponenten durch und liest die Werte
readValues(form1);
end;
except
showmessage('Es konnte keine Datei erstellt werden!'+chr(13)+
'Falls Sie das Programm von CD Starten kopieren Sie bitte die *.exe auf ihre Festplatte und starten Sie erneut!');
end;
ini.Free;
end;
So jetzt musst du nur die Procedure aufrufen, einen Pfad angeben und die Sacher ist gegessen.
Im OnShow und im OnClose würde ich die Procedure leseini, bzw. schreibeini ausführen.
Gruß Alexander