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.