Seite 1 von 2

Kompiliertes Programm nachträglich verändern?

Verfasst: 01.10.2007 16:44
von PureBasic4.0
Hi Leute,

ich möchte 2 Exe-Dateien erstellen. Die eine soll den Text in der anderen verändern können.

Beide Programme wurden kompiliert. Das 2. (das zu verändernde) enthält z.b. eine Konstante #Text. Diese ist aber nach dem Kompilieren nicht mehr veränderbar. Das 1. Programm soll das 2. so verändern können, dass #Text nicht mehr "Hallo" sondern z.b. "Hallo2" enthält. Es sollen sozusagen Informationen an das Programm übergeben werden, ohne dass Programm 1 oder eine andere Art von Datei (z.b. ini-Datei) mitgeliefert werden muss. Gibt es dafür einen kleinen Code-Snippet, oder lässt sich sowas auch anders realisieren?

Da die beiden Programme nicht nur auf meinem Rechner zum Einsatz kommen, wird es wahrscheinlich nichts bringen, den PureBasic Compiler in das 1. Programm einzubetten und das 2. dann per Sourcecode neu zu kompilieren.

Verfasst: 01.10.2007 16:56
von milan1612
Also vergiss erst einmal die Konstante. Die werden nämlich vor dem kompilieren
mit dem eigentlichen Wert ersetzt. Eine Möglichkeit wäre das ganze
mit einer Ressourcendatei zu lösen. Und die dann nachträglich zu ändern,
gibts im engl. Forum ein Snippet.

Verfasst: 01.10.2007 17:00
von PureBasic4.0
aber ich möchte, dass das Programm ohne zusätzliche Dateien funktioniert. Eine Ressourcendatei muss doch auch mitgeliefert werden, oder?

Verfasst: 01.10.2007 17:01
von milan1612
Nein, die wird mit einkompiliert :wink:

EDIT: Schau mal hier. So schaut zum Beispiel ein Menu Template in einer RC Datei aus,
du kannst damit auch "Konstanten" definieren (Google :wink: )

Verfasst: 01.10.2007 17:35
von PureBasic4.0
Kapiere ich jetzt irgendwie nicht. Ich kann nichts kompilieren, weil ich doch den Compiler nicht mitliefern darf (da Vollversion).

Zur erklärung:

Programm 1 enthält per IncludeBinary Programm 2. Wird Programm 1 ausgeführt, soll Programm 2 in eine Datei schreiben und so verändern, dass der Inhalt einer Konstante (oder halt Ressources-Datei) nicht mehr "Hallo" sondern "Hallo2" lautet.

Verfasst: 01.10.2007 17:38
von mk-soft
Es gibt mehrere Methoden um Daten zwischen Programme aus zu tauschen.
MailSlot, Pipes oder WM_COPYDATA

für WM_COPYDATA siehe hier: http://www.purebasic.fr/german/viewtopi ... wmcopydata

FF :wink:

Verfasst: 01.10.2007 17:39
von roherter
Programm 2 Temporär auf Platte schreiben und ProgramParameter nutzen! :shock:

Verfasst: 01.10.2007 17:45
von xperience2003
wenn es nur nen text ist dann ist das einfach
schreib in der fertigen exe einfach nen text an deiner variable
und die 2. exe sucht den dann und tauscht in aus
..ganz einfach

der osdm demomaker ist mit der technik gebaut
und der tauscht zig sprites, images music , playroutienen
..erm..und auch mal ne textzeile ^^

Verfasst: 01.10.2007 17:48
von PureBasic4.0
Ich möchte aber alles in EINER Datei haben. Da kann ich mit ProgramParameter nicht viel anfangen, weil man ja ne Verknüpfung braucht, um darauf zuzugreifen.

Die Variable soll dann in den Daten der Exe-Datei erhalten bleiben. So, als würde man die Datei erneut mit der veränderten Konstante kompilieren.

Verfasst: 01.10.2007 17:59
von roherter
Mir fällt da jetzt nur "Writestring" ein!
Wie du das jetzt umsetzt ist deine Sache ich weiß ja noch nichtmal was genau für ein Program das werden soll!