Autor Beitrag
dertobsen
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Di 08.05.07 23:23 
Hallo!

Ich habe folgendes Problem: Ich möchte ein Programm (A) schreiben welches seinerseits eine Programm (B) erstellt.

In der einfachsten Version habe ich das Programm B bereits vorliegen.

Jetzt ist die Frage: Wie bekomme ich das Programm B in das Programm A und wie bekomme ich es hin dass es wieder
als Exe-Datei gespeichert wird?

Ich habe versucht die fertige Datei B mit einem text-Editor zu öffnen, den Text in ein Memo zu kopieren und dann mit Memo.SaveToFile zu speichern.

Die Datei hatte zwar die richtige Größe, hat aber leider nicht funktioniert...
Außerdem habe ich versucht die Datei mttels Memo.LoadFromFile auszulesen, aber da hat er mit dann nur die 2 ersten Buchstaben ins Memo geschrieben.

Also meine Frage: Was tun?

Danke schon jetzt,
mit freundlichen grüßen,
dtobsen
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Di 08.05.07 23:27 
Du willst eine Binärdatei in einer Exe unterbringen und diese dann wieder extrahieren? Du kannst sie Exe als Resource anhängen (dazu mal die Suchfunktion fragen) und diese Resource dann laden. Wie genau, bin ich mir nicht sicher, versuchs mal mit aTStringList.LoadFromResource, falls es das gibt. Auch hierzu mal die SuFu fragen. ;)

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Mi 09.05.07 09:01 
Die Exe in eine Res Datei und dann...
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.ExeAuspackenClick(Sender: TObject);
var
 Stream : TResourcestream;
begin
  Stream := TResourcestream.Create(HINSTANCE,'MYExe',RT_RCDATA);
  if not FileExists('C:\Test.exe') then Stream.SaveToFile('C:\Test.exe') else ShowMessage('Fehler');
Stream.Free; 
end;

_________________
Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
Mindforce
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 358

Win XP Pro / MCE, Win 98, Slax (Linux)
Delphi 07 PRO, Delphi 3+7 (mit Prdx)
BeitragVerfasst: Mi 09.05.07 09:03 
Hi,

auf dsdt.info musst du mal nach SpliFile und JoinFile gucken.
Damit kannst du Datei B in Datei B packen. Und mit SplitFile kannst du Datei B wieder aus der Datei A "heruasholen".

Ich bin grad nicht zuhause deswegen kann ich dir nicht so gut helfen. Aber es geht. Probiers aus!

Mindforce

_________________
Our force; in mind.
dertobsen Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 09.05.07 21:44 
Titel: noch nicht ganz ... :(
Hallo!

Danke erstmal für die Antworten!

Also, SplitFile und JoinFile habe ich mir angeguckt. Das funktioniert hervorragend für fremde Dateien.
Ich kann also mit Prog A die Programme B und C zusammensetzen und auch wieder trennen.
Nur leider will ich ja das dass das Prog B in A drin steckt und dann erstellt wird wenn A ausgeführt wird.

Also habe ich mir das mit den Ressourcen angeguckt. Das sah sehr viel versprechend aus und auch in anderen
Foren habe ich entsprechende Hinweise gefunden. Dummerweise bin ich Anfänger und leider daran gescheitert aus
meinem Programm B eine Ressource zu machen!
Ich habe mit brcc32.exe gearbeitet aber das wollte irgendwie nicht... :

> Error calc.exe 1 3: Bad character in source input

das sagt er...
und ich habe keine Ahnung wie ich die nun die Exe-datei zu einer Ressource machen soll.
(ich habe auch den Quelltext der Datei, also wenn das leichter ist mache ich auch gerne aus dem in Delphi geöffneten Projekt eine Ressource.
Doch auch dann weiß ich leider nicht wie)

Wäre schön wenn mir da jemand noch nen kleinen Tipp geben könnte!

MfG
dtobsn
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Mi 09.05.07 22:17 
Eine Möglichkeit wäre
Erstelle eine Datei mit einem Texteditor trage dort folgendes ein in einer Zeile

MyExe RCDATA "C:\Dein Pfad\Test.exe"

und speichere diese Datei mit der Endung MyTest.rc, dann ziehst Du die rc Datei per Drag&Drop auf die Brcc32.exe
die erzeugt Dir dann die Res Datei.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
implementation

{$R *.dfm}
{$R MyTest.res} //Hier bekannt geben

procedure TForm1.ErzeugenClick(Sender: TObject);
var
 Stream : TResourcestream;
begin
  Stream := TResourcestream.Create(HINSTANCE,'MYExe',RT_RCDATA);
  if not FileExists('C:\test.exe') then Stream.SaveToFile('C:\test.exe') else ShowMessage('Fehler');
  Stream.Free; 
end;

_________________
Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
dertobsen Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 09.05.07 22:50 
Titel: FERTIG
Hallo!

Das klappt hervorragend!
Erst dachte ich bräuchte ein GUI von brcc32 weil du schreibst ich solle die *.rc auf die brcc32 drauf ziehen.
Aber das geht ja wie ich festgestellt habe auch so.
Bei mir ist die brcc32.exe nämlich (im gegensatz zu dem screenshot den ich irgendwo (ich glaube in der hilfe) gesehen habe) ein Kommandozeielentool.


Aber wie auch immer: Es klappt!

Vielen Dank für die große Hilfe!

MfG
dTobsn
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Mi 09.05.07 23:32 
Titel: Re: FERTIG
user profile icondertobsen hat folgendes geschrieben:
Bei mir ist die brcc32.exe nämlich (im gegensatz zu dem screenshot den ich irgendwo (ich glaube in der hilfe) gesehen habe) ein Kommandozeielentool.
Nie gehört, dass es anders sein soll :gruebel:
Aber schön zu hören, dass es klappte :)

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.