Einzelnen Beitrag anzeigen

Benutzerbild von ErazerZ
ErazerZ

Registriert seit: 27. Mai 2005
Ort: Baden
315 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Konfigurations - Parameter in Exe-Datei ablegen

  Alt 23. Nov 2005, 21:14
möglichkeit 1)
Daten an Server anhängen, server leißt die vom Dateiende aus (zb. Record, also immer fixe größe) - das funkt leicht, du öffnest im server den server zum lesen und gehst am dateiende - sizeof(Record) - dannach einfach im record füllen ..

möglichkeit 2)
Daten in der Resource des Servers speichern, also einfach UpdateResource um die einstellungen zu updaten

möglichkeit 3)
Daten (strings) irgendwo speichern, als consts, und das dann updaten, also nach offsets suchen und den bearbeiten, jedoch muss da genug platz vorhanden sein, zb.
Delphi-Quellcode:
const
  sTest = '123456789012345678901234567890'; // 30 Strings
Edit:
Code beispiel zu möglichkeit 1)
"server":
Delphi-Quellcode:
type
  TSettings = record
    TestString1: String[20];
    TestString2: String[15];
    TestInteger1: Integer;
  end;

var
  Settings: TSettings;

procedure LoadSettings();
var
  hFile: THandle;
  BytesRead: Cardinal;
begin
  hFile:= FileOpen(ParamStr(0), fmOpenRead);
  try
    SetFilePointer(hFile, GetFileSize(hFile, nil) - sizeof(TSettings), nil, FILE_BEGIN);
    ReadFile(hFile, Settings, sizeof(Settings), BytesRead, nil);
  finally
    CloseHandle(hFile);
  end;
end;

begin
  LoadSettings();
  WriteLn('TestString1: ' + Settings.TestString1);
  WriteLn('TestString2: ' + Settings.TestString2),
  WriteLn('TestInteger1: ' + IntToStr(Settings.TestInteger1));
end.
Editor:
Delphi-Quellcode:
type
  TSettings = record
    TestString1: String[20];
    TestString2: String[15];
    TestInteger1: Integer;
  end;

var
  Settings: TSettings;

procedure WriteSettings();
var
  fsFile: TFileStream;
begin
  Settings.TestString1 := 'Teeeesttt';
  Settings.TestString2 := 'Tessssttt';
  Settings.TestInteger1 := 1234;
  fsFile := TFileStream.Create('application.exe', fmOpenWrite);
  try
    fsFile.Position := fsFile.Size;
    fsFile.WriteBuffer(Settings, sizeof(Settings));
  finally
    fsFile.Free;
  end;
end;

begin
  WriteSettings();
end.
  Mit Zitat antworten Zitat