AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

.exe erstellen

Ein Thema von any_key · begonnen am 20. Sep 2006 · letzter Beitrag vom 21. Sep 2006
Antwort Antwort
Benutzerbild von MuTzE.Y85
MuTzE.Y85

Registriert seit: 11. Apr 2006
152 Beiträge
 
#1

Re: .exe erstellen

  Alt 20. Sep 2006, 19:09
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!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz