Ich werd dir mal helfen, wenns sonst keiner kann/will!
Hier haste nen Beispiel wie man das realisieren kann.
Kann sein, dass der Code Fehler hat, hab grad kein Delphi drauf, sonder nur den Texteditor.
Also der Code macht im Grunde folgendes:
Er kopiert ein EXE und hängt eine Configdatei an die EXE, in welcher die zu speichernden Werte stehn.
Er kann diese Werte wieder auslesen und dann ist es ja möglich von vorne zu beginnen.
Ich hab es mal für einen EditServer benutzt und schnell etwas umgeschrieben.
PS: Um irgendetwas von einer EXE laden zu können musst du sie natürlich vorher bearbeitet haben. Es wäre also sinnvoll die EXE nach dem kompilieren zu bearbeiten, damit sie sich selbst weiter verarbeiten kann.
Hier zum Code:
Delphi-Quellcode:
uses
IniFiles;
function CreateConfigFile: TStrings;
var
ConfigFile: TStrings;
begin
ConfigFile := TStringList.Create;
ConfigFile.Add('ZAHL=');
// usw. ConfigFile.Add('WEITERE_INFO=');
Result := ConfigFile;
//ConfigFile.Destroy;
end;
function TMainFrm.PrepareConfigFile: TStrings;
var
ConfigFile: TStrings;
begin
ConfigFile := TStringList.Create;
ConfigFile.AddStrings(CreateConfigFile);
ConfigFile.Strings[0] := ConfigFile.Strings[0] + Edit1.Text;
// usq. ConfigFile.Strings[1] := ConfigFile.Strings[1] + 'Info 2';
Result := ConfigFile;
end;
function TMainFrm.PrepareServer(aFileName, aNewFileName: String; aConfigFileText: TStrings): Boolean;
var
OrigFile, ConfigFile, NewFile: TFileStream;
ConfigFileText: TStrings;
OrigFileSize, ConfigFileSize: Integer;
begin
NewFile := TFileStream.Create(aNewFileName, fmOpenWrite);
OrigFileSize := SelfSize;
NewFile.Seek(OrigFileSize, soFromBeginning);
SetEndOfFile(NewFile.Handle);
//ConfigFile als Text öffnen und aus den Infos ein neues erstellen
ConfigFileText := TStringList.Create;
ConfigFileText.Assign(aConfigFileText);
//ConfigFile an den Server anhängen
ConfigFileText.Insert(0, 'SELF=' + IntToStr(OrigFileSize));
ConfigFileText.SaveToFile(ExtractFilePath(aNewServerName) + 'TempFile.conf');
ConfigFileText.Free;
ConfigFile := TFileStream.Create(ExtractFilePath(aNewFileName) + 'TempFile.conf', fmOpenRead);
ConfigFileSize := ConfigFile.Size;
NewFile.CopyFrom(ConfigFile, 0);
NewFile.Write(ConfigFileSize, 4);
ConfigFile.Free;
NewFile.Free;
DeleteFile(ExtractFilePath(aNewFileName) + 'TempFile.conf');
Result := True;
end;
function TMainFrm.LoadConfigFile(aFileName: String; Loaded: Boolean): Boolean;
var
aFile, ConfigFile: TFileStream;
ConfigFileText: TStrings;
ConfigFileSize: Integer;
TempStr: String;
begin
aFile := TFileStream.Create(aServerName, fmShareExclusive);
ConfigFile := TFileStream.Create('File.conf', fmCreate);
aFile.Seek(-4, soFromEnd);
aFile.Read(ConfigFileSize, 4);
aFile.Seek(-4 - ConfigFileSize, soFromEnd);
ConfigFile.CopyFrom(aFile, ConfigFileSize);
ConfigFile.Free;
aFile.Free;
ConfigFileText := TStringList.Create;
ConfigFileText.LoadFromFile('File.conf');
DeleteFile('File.conf');
if Pos('SELF=', ConfigFileText[0]) > 0 then
begin
TempStr := ConfigFileText[0];
Delete(TempStr, Pos('SELF=', TempStr), 5);
SelfSize := StrToInt(TempStr);
end;
ConfigFileText.Delete(0);
// Daten auslesen
Edit1.Text := Copy(ConfigFileText[0], 4, Length(ConfigFileText[0]));
ConfigFileText.Delete(0);
// usw.
ConfigFileText.Free;
Result := True;
end;
Viel Spass damit! Ich denke das sollte als Hilfe reichen!