Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   FreePascal (https://www.delphipraxis.net/74-freepascal/)
-   -   FreePascal Programm Build - dynamisch erzeugen (https://www.delphipraxis.net/167078-programm-build-dynamisch-erzeugen.html)

thomasschaf 12. Mär 2012 15:30

Programm Build - dynamisch erzeugen
 
Hallo,

ich möchte während der Laufzeit ein Programm dynamisch erzeugen lassen.

Einfaches Beispiel:
- Programm A enthält ein Edit-Feld (Edit1) und einen Button.
- Beim Klicken auf den Button wird ein ausführbares Programm B erzeugt, dass ein Label hat, dess Caption die von Edit1.Text ist.

Es würde mich sehr freuen, wenn mir jemand helfen könnte, auch wenn es nur ein Ansatz ist.

Übrigens soll das Programm A überall laufen, auch wo keine IDE installiert ist, d.h. es darf nicht eine eigene make.exe von freepascal/delphi/... brauchen.

Vielen Dank

FaTaLGuiLLoTiNe 12. Mär 2012 15:43

AW: Programm Build - dynamisch erzeugen
 
Zitat:

Zitat von thomasschaf (Beitrag 1156183)
Übrigens soll das Programm A überall laufen, auch wo keine IDE installiert ist, d.h. es darf nicht eine eigene make.exe von freepascal/delphi/... brauchen.

Um diese Bedingung zu erfüllen müsste dein Programm A entweder Quelltext für eine interpretierte Sprache erzeugen (dann bräuchte das Programm B allerdings zur Laufzeit den ensprechenden Interpreter, um ausgeführt zu werden) oder du müsstest in Programm A einen vollwertigen Compiler einbauen.

thomasschaf 12. Mär 2012 15:59

AW: Programm Build - dynamisch erzeugen
 
Könntest du dir eine von beiden Möglichkeiten als realisierbar vorstellen ?

implementation 12. Mär 2012 16:01

AW: Programm Build - dynamisch erzeugen
 
Sie sind beide realisierbar. Einfacher wäre es allerdings, einfach den FPC und die LCL-Sourcen mitzuliefern.

Uwe Raabe 12. Mär 2012 16:04

AW: Programm Build - dynamisch erzeugen
 
Mal abgesehen davon, daß das sicher realisierbar ist (Delphi selbst ist ja im Grunde auch nichts anderes), stellt sich die Frage, ob man es so realisieren sollte.

Ich gehe zwar davon aus, daß dein Beispiel mit dem Label nur fiktiv ist, aber das könnte man mit einer fertig compilierten EXE, die eine Konfigurationsdatei liest, wesentlich einfacher und schneller hinkriegen.

Beschreib doch einfach mal, was du wirklich machen willst.

uligerhardt 12. Mär 2012 16:06

AW: Programm Build - dynamisch erzeugen
 
Schuss ins Blaue: Liefere eine Vorlage für die zu erzeugende Exe mit, kopiere sie auf Knopfdruck und bette den String mit Delphi-Referenz durchsuchenUpdateResource ein.

Aphton 12. Mär 2012 16:09

AW: Programm Build - dynamisch erzeugen
 
Die Frage ist viel eher, was will er damit erreichen. Man kann sein jetztiges Vorhaben auch ganz einfach lösen, indem man einfach Daten/Flags hinten an die Kopie der Exe dran macht und bei jedem Start prüft, ob was da ist und darauf reagiert...
Aber in was für einem Ausmaß der das braucht und wie komplex das dann wird, ist für mich ungewiss!

jaenicke 12. Mär 2012 16:36

AW: Programm Build - dynamisch erzeugen
 
Eine echte Ressource braucht man dafür gar nicht:
http://www.delphipraxis.net/134855-t...tml#post918244

thomasschaf 12. Mär 2012 16:44

AW: Programm Build - dynamisch erzeugen
 
Vielen Dank für die zahlreichen Antworten :)

Einen konkreten Anwendungsfall habe ich nicht, dies war eher eine theoretische Frage.
Meistens suche ich mir zuerst die Lösung, dann das Problem, es wird sicherlich eines kommen, in dem ich dies anwenden kann.

Die Idee von uligerhardt halte ich für sehr treffend.
Leider ist UpdateResource neu für mich, daher muss ich mich damit zunächst beschäftigen.
Übrigens müsste man gar keine Kopie von Programm B mitliefern, da ich Programm B als Ressource in mein Programm A einbauen kann. Beim Button-Klick wird die Ressource extrahiert und dann im Programm B mit UpdateRessource der String / die Strings ersetzt.
Desweiteren hoffe ich, dass ich aus dem String ABC auch wxyz machen kann, also unterschiedliche Zeichenlänge, was mit einem "normalen" Hexeditor nicht geht :(

Gruß,
Thomas

jaenicke 12. Mär 2012 16:56

AW: Programm Build - dynamisch erzeugen
 
Zitat:

Zitat von thomasschaf (Beitrag 1156202)
Desweiteren hoffe ich, dass ich aus dem String ABC auch wxyz machen kann, also unterschiedliche Zeichenlänge, was mit einem "normalen" Hexeditor nicht geht :(

Schau dir einfach meinen Link an, da passiert genau das. ;-)
Du kannst in der Demo in einem Memo Text eingeben und anhängen, beim nächsten Start ist der dann beim Start im Memo.

Da du mit Lazarus arbeitest, wäre UpdateResource wohl weniger sinnvoll, da es eine Windows API Funktion ist. Und Lazarus ist ja vor allem für Cross Plattform sinnvoll, was dann damit nicht mehr ginge. Meine Lösung macht das selbst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:36 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz