Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi .exe erstellen (https://www.delphipraxis.net/77518-exe-erstellen.html)

any_key 20. Sep 2006 17:00


.exe erstellen
 
alaoh
kann mir vllt jemand sagen was ich machen muss um ein programm zu haben mit dem ich ein anderes programm erstellen kann?
klingt komisch... aber ich versuchs ma weiter zu erklären....
also ein kleines beispiel
ich hab eine programm in das ich eine zahl eintippen kann
dann klicke ich auf einen button und es wird eine neue datei erstellt
wenn man diese datei öffnet kommt ne message mit der zahl die man zuvor angegeben hat
allerdings soll diese datei nicht computer gebunden sein also ist es nicht möglich einfach die zahl irgendwo zu speichern (außer halt in der .exe selbst)

Go2EITS 20. Sep 2006 17:07

Re: .exe erstellen
 
? Ne zahl erstellen, die ein anderes Programm lesen kann ist ok, aber nicht computergebunden?
Willst Du aus der ersten .exe mit der zweiten .exe die Zahl rauslesen? Puh! :gruebel:
Formulier mal konkreter, dann kommst Du Deiner Lösung näher, bzw. es antwortet Dir auch jemand.
:hi:

any_key 20. Sep 2006 17:10

Re: .exe erstellen
 
also ich will in programm eine zahl eintippen
dann klicke ich auf einen button
dieser erstellt ein programm2
wenn man dann programm2 öffnet soll die zahl erscheinen die man in programm1 eingegeben hat
diese zahl soll in der neu erstellten .exe enthalten sein
also es soll so laufen als ob ich ein neues programm geschrieben hätte
aber nur das dieses programm von meinem programm geschrieben wird

vlees91 20. Sep 2006 17:10

Re: .exe erstellen
 
Er will aus seinem Programm aus weiter echsen erstellen

joel93 20. Sep 2006 17:22

Re: .exe erstellen
 
Meiner meinung nach geht das nich direkt, du könntest aber eigendlich in der ersteller exe nen vertiges Prog zum ini öffnen 'verstecken', das dan Extrahiert wird, und dann die Zahhl aus einer .ini Ausliest, dafür sind dann aber zwei Dateien notwendig. Aber ich glaub, dass du das nich willst :wink:, du willst bestimmt prog's für andere leut machen, die sie nicht verändern können, schlaue Leute aber können das dann :cry: .
An dieser stelle frag i mich, warum ich das überhaupt getippt hab, wenn dus wahrscheinlich sobiso nich brauchs.

Hador 20. Sep 2006 17:26

Re: .exe erstellen
 
Zitat:

Zitat von joel93
Meiner meinung nach geht das nich direkt, du könntest aber eigendlich in der ersteller exe nen vertiges Prog zum ini öffnen 'verstecken', das dan Extrahiert wird, und dann die Zahhl aus einer .ini Ausliest, dafür sind dann aber zwei Dateien notwendig. Aber ich glaub, dass du das nich willst :wink:, du willst bestimmt prog's für andere leut machen, die sie nicht verändern können, schlaue Leute aber können das dann :cry: .
An dieser stelle frag i mich, warum ich das überhaupt getippt hab, wenn dus wahrscheinlich sobiso nich brauchs.

Dan Ansatzpunkt is doch schon ganz richtig. Nur muss die Zahl dann an das andere Programmangehängt werden.

vlees91 20. Sep 2006 17:26

Re: .exe erstellen
 
also es ist möglich, denn es gibt ein Programm (mit Delphi 2 gemacht), mit dem jeder eigene Trainer (für Spiele) machen kann. Dabei kann man dann auch das Form selber anordnen und den Buttons und Edits zuweisen, was sie tun sollen.

Anschließend kommt EINE datei raus, eine EXE.

hoika 20. Sep 2006 17:34

Re: .exe erstellen
 
Hallo,

das kann schon sein,
ich würde die Exe2 z.B. schon fertig als Ressource in Exe1 einbinden,
dann entweder die Konfiguration des Forms in Exe2
als Extra-Datei erzeugen, die Exe2 dann ausliest und das Form
und alle Form-elemente (Label, Edit) entsprechend
selber zur Laufzeit erzeugt oder
was schwieriger ist, die Konfigurationsdaten als
Ressourcen in Exe2 ablegen.

Grundprinzip ist aber immer,
dass zumindestens eine lauffähige exe2 aschon vorhanden ist.

Beginnen kann man bei Ressourcen
mit LoadResource, FindResource.

Wie man externe Dateien (Exe2) in andere eigene Programme
als Ressourcen einbindet,
findet man in google unter "Wave-Dateien einbinden"


Heiko

Phoenix 20. Sep 2006 17:35

Re: .exe erstellen
 
Hrm.. da gabs mal was. Im Prinzip wird aus einer .exe eine Ressource extrahiert, diese geändert und wieder in die .exe gepackt. Such mal nach ressource und exe hier in der DP. Ich weiss, das wir das mal hatten, kann mich aber nicht an genauere Details erinnern.

joel93 20. Sep 2006 17:41

Re: .exe erstellen
 
Wenn das geht, muss doch eigentlich dias ersteller prog nen compiller enthalten, und den kan man schlecht selber (in delphi) proggen (oder? :gruebel: ),
es sei denn es gibt in delphi language einen versteckten Befehl, der im fertigen progautomatisch nen compiller einbaut. :?: :!: :?:

DGL-luke 20. Sep 2006 17:49

Re: .exe erstellen
 
Naja, möglich ist so etwa immer. Und etwas wie einen Trainer kann man auch per Exe + Ressource mit Konfiguration bauen. Man hat also seine Exe, an der hängt als resource die Trainer-exe dran. dann baut man in der exe seine oberfläche und seine befehle zusammen. das programm macht daraus einen konfigurationsdatensatz und hängt an die trainer-exe das dran und speichert das ganze auf platte.

Die trainer-exe muss jetzt nur noch die konfiguration interpretieren - et voila: man hat eine exe generiert.

joel93 20. Sep 2006 17:55

Re: .exe erstellen
 
Zitat:

Zitat von DGL-luke
Naja, möglich ist so etwa immer. Und etwas wie einen Trainer kann man auch per Exe + Ressource mit Konfiguration bauen. Man hat also seine Exe, an der hängt als resource die Trainer-exe dran. dann baut man in der exe seine oberfläche und seine befehle zusammen. das programm macht daraus einen konfigurationsdatensatz und hängt an die trainer-exe das dran und speichert das ganze auf platte.

Die trainer-exe muss jetzt nur noch die konfiguration interpretieren - et voila: man hat eine exe generiert.

Ich will dich nich mit Arbeit zupampen, aber ich glaub son pa unkennende wie ich (und nochn pa andere) und der schlaue (kann sein :wink: ) any key brauchen nen quellcode oder so was 'annährerendes', Ich brauch das zwa nich, aber es interesiert glaub i viele...

bernau 20. Sep 2006 18:04

Re: .exe erstellen
 
Im Grunde genommen kann man jede EXE-Datei beliebig vergrößern, indem man diese in einen Stream läd, dann ein paar Daten an den Stream dranhängt (z.B. deine Zahl) und dann diesen Stream wieder speichert. Die exe-Datei ist dann ein bischen größer, läuft aber m.W. nach immer noch. Diese "vergrößerte" EXE-Datei kann sich nun selber in einem Stream öffenen, an die Stelle mit den Daten springen und diese angehängten Daten auslesen und anzeigen.

Was du also machen musst, sind zwei Programme schreiben. Programm1 ist das Anzeigeprogramm, dem die Daten angehängt werden. Programm2 bietet die Eingabe einer Zahl, läd das (fertige) Programm1 in einen Stream, hängt die Daten an das Ende des Streams und speichert es unter einem anderen Dateinamen (Programm3.exe) ab. Schwupp, da hast du ein Programm, welches individuelle Daten beinhaltet.


Gerd

DGL-luke 20. Sep 2006 18:30

Re: .exe erstellen
 
es gibt hier bei freeware oder Open Source ein programm, das Exe-Diashows erstellt... musst halt mal sehen, ob ihr da den source ansehen kannst.

any_key 20. Sep 2006 18:56

Re: .exe erstellen
 
ich hab mal gesucht aber nur das gefunden http://www.delphipraxis.net/internal...&highlight=dia und dort wird keine neue .exe erstellt
aber mir ist eben noch eine andere idee gekommen
man könnte doch einfach eine datei in den ordner der datei speichern
dann überprüft das programm ob die datei vorhanden ist
wenn ja dann kann man die einstellungen vornehmen
und wenn nicht dann halt eben nicht....
das einzige problem was dann noch da wäre das man die sachen ja in der datei selbst speicher müsste...

MuTzE.Y85 20. Sep 2006 19:09

Re: .exe erstellen
 
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!

MuTzE.Y85 20. Sep 2006 19:12

Re: .exe erstellen
 
Ähm, ja, die procedure muss natürlich "PrepareFile" heißen! :wink:

vlees91 20. Sep 2006 19:32

Re: .exe erstellen
 
Ist es möglich Ressourcen zur Laugzeit zu erstellen? Wenn ja ist es kein Problem dies zu tun!

MuTzE.Y85 20. Sep 2006 19:33

Re: .exe erstellen
 
Soll das jetz ne Frage sein oder?

any_key 20. Sep 2006 19:50

Re: .exe erstellen
 
wow also wenn du das alles ohne automatismus geschrieben hast dann :thumb:
ich werd mal versuchen es einzubauen....
//Edit
also irgendwie glaub ich mein delphi spinnt...
ich hab nen edit feld eingebaut das edit1 heißt
und wenn ich es dann compilieren will meckert er an der stelle mit edit1 rum und sagt das er es nicht kennt
auch an ne paar anderen stellen hat er gemeckert aber ich glaub das hab ich soweit im griff
kann mir vielleicht jemand sagen wie ich dann die datei erstelle? :oops: bring mir selber delphi bei und da ist das noch nicht vorgekommen...

MuTzE.Y85 20. Sep 2006 23:01

Re: .exe erstellen
 
Ich kann mir schon denken wo der Fehler ist.

Hast du es ungefähr so in der Unit stehen?

Delphi-Quellcode:
procedure PrepareFile...
begin
...
end;
Wenn ja, dann muss es so heißen:

Delphi-Quellcode:
procedure TForm1.PrepareFile...
Das ganze noch unter public deklariert und dann is gut!

Also so:

Delphi-Quellcode:
public
  procedure PrepareFile...
end;

procedure TForm1.PrepareFile...
begin
...
end;

Hoffe ich hab dich richtig verstanden und du mich :wink:


PS: Ich geb dir nen Tip fürs Lernen! Such dir hier im Forum nen paar OpenSource Programme und code sie nach. Dadurch lernt man ziemlich schnell, wie alles so funktioniert und was wichtig ist usw.
Hab ich damals auch so gemacht, und als ich es in der Ausbildung hatte, konnte ich schon alles :mrgreen:

wellilein 21. Sep 2006 01:59

Re: .exe erstellen
 
Mal ganz generell gesprochen: Ja, man kann von einem Programm aus eine andere EXE erstellen.
Schließlich macht die Delphi EXE ja nichts anderes als (früher oder später) eine neue EXE mit beliebigem Inhalt zu erstellen.
Üblicherweise braucht man dazu einen Compiler.

Bei den neueren Sprachen die auf Intermediate Code basieren (.NET) lässt sich das ganze etwas einfacher erlediglen, da diese oft direkt Intermediate Code ausgeben können (Reflection.Emit()).

Was hier im Forum vorgestellt wurde erinnert eher an einen Interpreter: eine vorgefertigte EXE wird eigentlich nicht verändert, aber die Aufgaben werden in einem zu interpretierenden Teil (Config-File, Daten am Ende der EXE) abgelegt.

Ich würde auch sagen, dass ein Interpreter zunächst einfacher und schneller zu programmieren ist. Das kommt aber auf die Mächtigkeit an. Wenn viele unterschiedliche Aufgaben erledigt werden sollen wird es irgendwann kompliziert. Viele Sachen lassen sich auch irgendwann nicht mehr sinnvoll als Daten beschreiben.

Das ist dann der Punkt an dem man sich eine Grammatik definiert und einen Compiler baut.

Borland hat einige ältere Versionen der Pascal Compiler online gestellt: Liste frei verfügbarer Compiler. Das bedeutet: Dein Programm könnte den Compiler als Resource mitbringen und müsste dann "nur" noch in der Lage sein, gültigen Pascal-Code zu erzeugen. Dann kannst Du jede belibige EXE erzeugen.

Ich sage nicht, dass das einfach ist :( , aber die Möglichkeit besteht jedenfalls.

Gruß, Thomas

any_key 21. Sep 2006 15:12

Re: .exe erstellen
 
also so ganz versteh ich es noch nicht...
ich hab den code jetzt so umgeschrieben das ich ihn compilern kann und die procedure prepare file eingefügt (auch wenn es meiner meinung nach jeder logik wiederspricht...)
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IniFiles, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    procedure PrepareFile;
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function CreateConfigFile: TStrings;
var
ConfigFile: TStrings;
begin
ConfigFile := TStringList.Create;
ConfigFile.Add('ZAHL=');
// usw. ConfigFile.Add('WEITERE_INFO=');

Result := ConfigFile;
//ConfigFile.Destroy;
end;

function TMainFormPrepareConfigFile: 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 TMainFormPrepareServer(aFileName, aNewFileName: String; aConfigFileText: TStrings): Boolean;
var
OrigFile, ConfigFile, NewFile: TFileStream;
ConfigFileText: TStrings;
OrigFileSize, ConfigFileSize: Integer;
begin
NewFile := TFileStream.Create(aNewFileName, fmOpenWrite);
OrigFileSize := 100;
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 TMainFormLoadConfigFile(aFileName: String; Loaded: Boolean): Boolean;
var
aFile, ConfigFile: TFileStream;
ConfigFileText: TStrings;
ConfigFileSize: Integer;
TempStr: String;
SelfSize:Integer;
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 := 100;
  end;
ConfigFileText.Delete(0);

// Daten auslesen

ConfigFileText.Delete(0);

// usw.


ConfigFileText.Free;

Result := True;
end;

procedure TForm1.PrepareFile;
begin
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  PrepareFile;
end;

end.
also es ist ja komplett unlogisch die procedure aufzurufen wenn sie keinen inhalt hat...

MuTzE.Y85 21. Sep 2006 15:32

Re: .exe erstellen
 
Also so wie ich das sehe, lässt du lieber die Finger davon und probierst erst mal dir das Grundwissen anzueignen! Du solltest meins nicht nur kopieren und das andere hinzufügen :warn:

Du hast ja den ganzen Code verändert, so das nix mehr geht.
Also wie gesagt, fang erst mal mit was anderem an Delphi zu lernen und dann kannste das hier nochma probieren!

MuTzE.Y85 21. Sep 2006 16:03

Re: .exe erstellen
 
So müsste es gehn.

Komponenten:
2 Edits, 2 Buttons, OpenDialog, SaveDialog

Edit1 - Eingabe der Zahl die gespeichert werden soll.
Edit2 - Ausgabe der Zahl die gespeichert wurde.
LadenButton - Eine EXE Laden und Zahl auslesen.
SpeichernButton - Eine neue EXE mit einer Zahl speichern.


Code:

Delphi-Quellcode:
private
  function PrepareConfigFile: TStrings;
  function PrepareFile(aFileName, aNewFileName: String; aConfigFileText: TStrings): Boolean;
  function LoadConfigFile(aFileName: String): Boolean;
end;


uses
  IniFiles;


function CreateConfigFile: TStrings;
var
ConfigFile: TStrings;
begin
ConfigFile := TStringList.Create;
ConfigFile.Add('ZAHL=');

Result := ConfigFile;
ConfigFile.Free;
end;

function TForm1.PrepareConfigFile: TStrings;
var
ConfigFile: TStrings;
begin
ConfigFile := TStringList.Create;
ConfigFile.AddStrings(CreateConfigFile);

ConfigFile.Strings[0] := ConfigFile.Strings[0] + Edit1.Text;

Result := ConfigFile;
ConfigFile.Free;
end;


function TForm1.PrepareFile(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);

ConfigFileText := TStringList.Create;
ConfigFileText.Assign(aConfigFileText);

ConfigFileText.Insert(0, 'SELF=' + IntToStr(OrigFileSize));
ConfigFileText.SaveToFile(ExtractFilePath(aNewFileName) + '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 TForm1.LoadConfigFile(aFileName: String): Boolean;
var
aFile, ConfigFile: TFileStream;
ConfigFileText: TStrings;
ConfigFileSize: Integer;
TempStr: String;
begin
aFile := TFileStream.Create(aFileName, 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
Edit2.Text := Copy(ConfigFileText[0], 4, Length(ConfigFileText[0]));
ConfigFileText.Delete(0);

ConfigFileText.Free;

Result := True;
end;


procedure TForm1.SpeichernButtonClick(Sender: TObject);
var
 ConfigFile: TStrings;
begin
 if SaveDialog1.Execute then
  begin
   ConfigFile := TStringList.Create;
   ConfigFile.AddStrings(PrepareConfigFile);
   PrepareFile(Application.ExeName, SaveDialog1.FileName, ConfigFile);
   ConfigFile.Free;
  end;
end;

procedure TForm1.LadenButtonClick(Sender: TObject);
begin
 if OpenDialog1.Execute then
  LoadConfigFile(OpenDialog1.FileName);
end;


Wenn du es jetz noch nicht hinbekommst, dann beherzige meinen Beitrag vor diesem hier!
Viel Glück!

________________________________
Edit:

Mir ist grad aufgefallen, dass es wahrscheinlich nicht klappen wird, da deine EXE ja ausgeführt wird. Du müsstest sie wahrscheinlich noch kopieren und dann wieder löschen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:50 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