Autor |
Beitrag |
G-man
      
Beiträge: 258
Win 2000, Win ME, SuSE 8.2
D5 Standard, D6 Professional
|
Verfasst: Di 06.05.03 13:10
Moin, moin,
kennt einer von euch vieleicht eine Möglichkeit, eine *.exe Datei aus einem Delphi- Programm heraus zu erstellen.
Im Klartext:
Wenn in meinem Programm der User auf einen Buttton klickt wird eine Exe Datei erzeugt (aber nicht eine Exe meines Programmes).
Wär`nett...
G-man
Zuletzt bearbeitet von G-man am Di 06.05.03 15:23, insgesamt 1-mal bearbeitet
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Di 06.05.03 13:27
Soweit ich weiß, erstellt Delphi aus Deinem Quellcode eine EXE.  Das ist der Sinn des Compilers. Wahrscheinlich willst Du was anderes wissen, aber auf die so formulierte Frage wird es nur diese Antwort geben. 
_________________ Gruß
Hansa
|
|
ase
      
Beiträge: 203
Gentoo, Windows 9X, ME, 2k, NT, XP
Delphi 7 Prof., PHP 5 (Eclipse 3 SDK)
|
Verfasst: Di 06.05.03 14:25
servus
kann man. du kannst den delphi compiler benutzen. an den übergibt du dann ne dpr und dann compiliert der dir das. zu finden im Delphi\Bin verzeichnis. mit dem teil kann man noch nen haufen andere sachen einstellen. alles über die kommandozeile. einfach mal inna dos box ohne parameter starten.
ase.
|
|
patrick
      
Beiträge: 1481
WIN2k, WIN XP
D6 Personal, D2005 PE
|
Verfasst: Di 06.05.03 20:37
mit einem dephi programm kannst du nicht direkt andere exe-dateien erstellen.
am besten erstellst du neben deinem hauptprogramm einen "programmrohling" der seine
daten aus einer "programmdatei" erhält.
ich hoffe du versteht was ich mein. 
_________________ Patrick
im zweifelsfall immer das richtige tun!!!
|
|
ase
      
Beiträge: 203
Gentoo, Windows 9X, ME, 2k, NT, XP
Delphi 7 Prof., PHP 5 (Eclipse 3 SDK)
|
Verfasst: Di 06.05.03 22:14
servus
@patrick: warum denn nicht? wenn man das macht wie ich das geschrieben habe. also nochmal ganz genau:
man nehme die c:\delphi7\bin\dcc32.exe und packe sie in das selbe verzeichnis, in dem die zu compilierende dpr sich befindet. dann starte man das ganze mit dcc32.exe mein_projekt.dpr und freue sich anschließend über den erfolg. das klappt, hab ich selbst schon gemacht und zwar mit delphi 3 wenn ich mich recht erinnere.
ich glaube aber das die dcc32.exe noch einige dlls braucht die auch im bin verzeichnis liegen. einfach mit rüber kopieren.
natürlich muss dabei auch erwähnt werden das du diese dateien nicht weitergeben darfst wegen copyright.
ansonsten gibt es einen pascal parser. open source. das teil is gut. der macht auch exe dateien und ist selber in delphi geschrieben. neulich hatte ich ihn noch aber ich weiß net mehr wie das teil heißt.
ase
|
|
Alni
      
Beiträge: 205
Win 2000, XP, SuSe, Debian
D5 Prof, D7 Prof, Kylix
|
Verfasst: Mi 07.05.03 07:20
Es gibt noch eine andere Möglichkeit eine Exe aus deinem Programm heraus zu erstellen, ähnlich wie es Packprogramme für selbsextrahierende Dateien machen. Du kannst die zu erstellende Exe direkt an dein Programm anhängen. Diese kann dann dein Hauptprogramm zur Laufzeit auslesen und als neue Datei abspeichern. Anschließend kannst du noch an die neue Exe Nutzdaten anhängen, die die neu erstellte Exe, wenn du sie ausführst, quasi aus sich selbst herausliest.
Ich hoffe es war verständlich wie ich das jetzt gemeint habe. Wenn du Fragen hast wie das genau geht poste einfach hier nochmal.
_________________ MfG Alex
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 07.05.03 07:52
Wie soll das bitte mit dem Delphi-Kompiler uaf fremden System gehen, wenn kein Delphi installiert ist? Da fehlen sämtliche Units.
Von der rechtlichen Seite mal abgesehen.
Die einzige Lösung hat Alni gepostet. Aber die geht nur, wenn die angehängten Dáten jedesmal das gleiche Format haben, sonst wird das nichts. Da die einkompilirte Exe ja mit den ihr angehängten Daten klar kommen muß.
|
|
ase
      
Beiträge: 203
Gentoo, Windows 9X, ME, 2k, NT, XP
Delphi 7 Prof., PHP 5 (Eclipse 3 SDK)
|
Verfasst: Mi 07.05.03 10:03
servus
mit den units das ist ein problem aber es ist lösbar. ich hatte damals das programm nur auf meinem rechner bebutzt. der dcc32.exe kann man den pfad übergeben in dem die units abgelegt sind.
ase
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Mi 07.05.03 10:15
Hallo!
Evtl gibt es als Alternative die Möglichkeit, einen Interpreter miteinzubinden, anstelle ein Programm zu kompilieren.
Cu,
Udontknow
|
|
Alni
      
Beiträge: 205
Win 2000, XP, SuSe, Debian
D5 Prof, D7 Prof, Kylix
|
Verfasst: Mi 07.05.03 12:33
@Luckie
Du hast im Prinzip recht das die angehaengten Daten immer das gleiche Format haben muessen, aber alle Daten die von einem bestimmten Programm gelesen werden, muessen ein bestimmtes Format haben. Und man kann das Format ja ziemlich flexibel gestalten. Man kann z.B einmal ein eindimesionales Array anhaengen und das naechste mal ein zwei oder x-dimensionales Array. Es muss nur auch in den Daten stehen was genau drin ist. Genauso kann man unterschiedliche Datentypen hintereinander schreiben.
Was ich damit sagen will ist, ein Format gibt es immer egal ob man auf eine externe Datei zu greift oder auf die angehaengten Daten. Der eigentliche Nachteil besteht darin, das die neu erstellte Exe, die ihr angehaenten Daten nicht veraendern kann.
@G-Man
Schoen waere es natuerlich wenn du dich nochmal melden wuerdest und klarstellen koenntest ob du nun einen Compiler bzw. Linker schreiben, nur Quelltext uebersetzen moechtest oder eher an eine Anwendung wie selbstextrahierende Archieve gedacht hast.
Also G-Man bitte melde dich 
_________________ MfG Alex
|
|
patrick
      
Beiträge: 1481
WIN2k, WIN XP
D6 Personal, D2005 PE
|
Verfasst: Mi 07.05.03 16:40
luckie: du spricht mir aus der seele 
_________________ Patrick
im zweifelsfall immer das richtige tun!!!
|
|
G-man 
      
Beiträge: 258
Win 2000, Win ME, SuSE 8.2
D5 Standard, D6 Professional
|
Verfasst: Do 08.05.03 09:33
Titel: Klarstellung
Moin,
ich wollte eigentlich nur den Quelltext übersetzen (auf Knopfdruck).
G-man
|
|
ase
      
Beiträge: 203
Gentoo, Windows 9X, ME, 2k, NT, XP
Delphi 7 Prof., PHP 5 (Eclipse 3 SDK)
|
Verfasst: Do 08.05.03 09:40
nujo, darüber diskutiern wir ja die ganze zeit... gelle?
ase
|
|
G-man 
      
Beiträge: 258
Win 2000, Win ME, SuSE 8.2
D5 Standard, D6 Professional
|
Verfasst: Do 08.05.03 09:50
Ich meine, dass in der Laufenden Project.exe eine ander exe erstellt wird,
die allerdings vom User beeinflusst werden kann.
G-man
|
|
ase
      
Beiträge: 203
Gentoo, Windows 9X, ME, 2k, NT, XP
Delphi 7 Prof., PHP 5 (Eclipse 3 SDK)
|
Verfasst: Do 08.05.03 10:09
also so langsam fang ich an zu bezweifeln das ich verstehe was du machen willst.
wähle eine der folgenden varianten:
1:) du hast ne dpr, die du mit deinem projekt @ runtime compilieren willst, so dass du ne exe dabei rausbekommst.
2:) du hast dein programm am laufen und willst eine bereits fertige exe irgendwie erstellen oder irgendwo hinkopieren
3:) du willst nen anderes programm starten.
ase
|
|
G-man 
      
Beiträge: 258
Win 2000, Win ME, SuSE 8.2
D5 Standard, D6 Professional
|
Verfasst: Do 08.05.03 11:44
Eher die 2. Variante.
Aber die Exe soll während der Laufzeit erstellt werden.
G-man
|
|
ase
      
Beiträge: 203
Gentoo, Windows 9X, ME, 2k, NT, XP
Delphi 7 Prof., PHP 5 (Eclipse 3 SDK)
|
Verfasst: Do 08.05.03 11:52
tja dann denk ich mal kannste dir die karten legen
ase
_________________ -EN
|
|
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Do 08.05.03 12:26
Es gibt auch einen Kommandozeilen-Compiler. Das hat folgende Nachteile: Du mußt den Quelltext rausrücken. Das nächste ist dann, daß der Benutzer an DEINEM Quelltext rumfummeln muß, um was zu verändern. Ansonsten würde er sich andauernd dieselbe EXE erstellen. Und Borland dürfte auch was dagegen haben.
_________________ Gruß
Hansa
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 08.05.03 12:30
Auch wenn Borland nichts dagegen haben sollte, nur, wie ich schon sagte, der Kompiler alleine bringt es nicht. Sämtliche Units und alles was dazu gehört müßte mitgeliefert werden.
Aber ich kann euch beruhigen, von der Idee kann er sich schon aus rein rechtlichen Gründe verabschieden.
|
|
Klabautermann
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: Do 08.05.03 14:57
Hallo,
ase hat folgendes geschrieben: | 2 du hast dein programm am laufen und willst eine bereits fertige exe irgendwie erstellen oder irgendwo hinkopieren |
G-Man hat folgendes geschrieben: | Eher die 2. Variante.
Aber die Exe soll während der Laufzeit erstellt werden. |
also noch mal langsam für mich.
Du willst eine EXE ausliefern, die dann irgendwann zur laufzeit an irgendwo eine andere EXE rausschreibt.
Ist die "neue" EXE in irgeneiner Art von den Eingaben des Benutzers Abhängig oder macht sie immer das Selbe?
Wenn sie immer das selbe macht, ist das ganze Trivial, da du die bereits Compilierte EXE lediglich als resource in deine EXE einkompiliert weden muss.
Wenn benutzereingaben berücksichtigt werden müssen, währe es eine möglichkeit diese in eine Konfigurationsdatei (welche wieder an die extrahierte EXE angehängt werden kann) rauszuschreiben und eine Ebenfalls vorher Compilierte EXE auf diese Parameter reagieren zu lassen.
Wenn der Benutzer hingegen richtig Programmieren können soll, geht das nur soweit wie diverse Script-Interpreter es dir erlauben. Auch hier müsstest du eine bereists vorher Kompilierte EXE, welche den Interpreter enthält rausschreiben und das eigentliche Script in eine Datei Schreiben aus der die Interpreter EXE liest (auch diese kann natürlich wieder mit der EXE verschmolzen werden). Aber es bietet dir "nur" die Möglichkeiten der Script-Sprache, nicht die von Delphi.
Wenn du Tatsächliche Delphi Programme übersetzen können willst, dann solltest du in verhandlungen mit Borland eintreten, wenn du große Mengen abnimmst, bekommst du sicherlich einen netten Rabatt auf die Delphi-Lizenzen, die mit deinem Programm verkaufen musst.
Gruß
Klabautermann
|
|