Thema: Delphi Daten in EXE speichern

Einzelnen Beitrag anzeigen

ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#20

Re: Daten in EXE speichern

  Alt 29. Okt 2005, 11:18
vielleicht wär die Registry dannn doch noch einfacher. Am leichtesten geht es ja mit ner Inifile:

Delphi-Quellcode:
uses inifiles;
[...]
procedure savedirname(dirname:string);
var
  i:tinifile;
begin
  try begin
  i:=tinifile.create(changefileext(application.exename,'.ini'));
  //Ini-Datei erstellen
  i.writestring('Dirs','Path',dirname);
  //Eintrag in Datei speichern
  i.Free;
  //Datei schließen
  filesetattr(changefileext(application.exename,'.ini'),fasysfile and fahidden)
  //Datei verstecken
  end; except end;
end;

function getdirname:string;
var
  i:tinifile;
begin
  result:=extractfilepath(application.exename)
  //zuerst alternatives Ergebniss setzten (pfad der EXE-Datei)
  try begin
    i:=tinifile.create(changefileext(application.exename,'.ini'));
    //Dann Inifile erstellen. Die Inifile erhält den Namen der EXE-Datei nur mit der Endung .ini statt .exe
    result:=i.ReadString('Standard','Dirname',extractfilepath(application.ExeName));
    //Aus der Sektion STANDART der Inidatei wird der Wert von dirname eingelesen.
  end; finally
    i.free;
    //Die Inidatei wird geschlossen
  end;
end;
(ungetestet)

Ich weiss auch gar nicht, wieso es dir so wichtig ist, unbedingt die Daten in der eigenen Exe abzuspeichern? Das ist die komplizierteste mögliche Lösung...

Ne INI-Datei tuts ja auch...

Außerdem kannst du die INI-Datei auch verstecken usw so dass der User sie nicht sehen kann.

Die beiden Prozeduren kopierst du dann irgendwo ziemlich oben in deine Unit rein (am besten gleich nach IMPLEMENTATION). Dann kannst du sie so aufrufen:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  pathname:=getdirname;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  savedirname(pathname);
end;
wobei pathname eine globale string-variable ist, auf die du in allen anderen Prozeduren zugreifen kannst.
Michael Enßlin