Programm resource
-
Wie binde ich bei Borland C++ Builder 2009 eine .exe in das Projekt ein und lass diese dann während der Laufzeit irgendwo hinkopieren ?
bei VC++ 2008 Express ist das ja einfach.Und wozu ist dass Package ? kann man das dafür benutzen ?
EDIT: wär was fürs faq !
-
Tim06TR schrieb:
Wie binde ich bei Borland C++ Builder 2009 eine .exe in das Projekt ein und lass diese dann während der Laufzeit irgendwo hinkopieren ?
Eine exe-Datei ist eine Resource vom Typ RT_RCDATA.
Einbinden in die Projekt.exe beim BCB2009:
Project/Resourcen/Hinzufügen. Im Dateifilter AlleDateien(.) markieren, exe Datei auswählen und hinzufügen.
Wichtig ist nun der Bezeichner der Resource, mit dem wir die Resource im Programm ansprechen.Nach dem compilieren ist die Dateigrösse gestiegenen; im Bildeditor die Projekt.res öffnen,
jetzt Eintrag RC-Daten mit Res-Bezeichener der eingepackten Exe.
Auf die gleiche Art können auch andere Dateitypen eingepackt werden wie wav, mp3 etc.Tim06TR schrieb:
..diese dann während der Laufzeit irgendwo hinkopieren ?
Folgender Schnipsel reicht aus (bei Bedarf Fehlerbehandlung hinzufügen):
HRSRC hRes; HRSRC hMem; DWORD sz_exe; hRes = FindResource( HInstance, "TEST_EXE", RT_RCDATA ); // Bezeichner beachten if ( hRes != NULL) { // Resource laden hMem = (HRSRC)LoadResource(HInstance, hRes); sz_exe = SizeofResource(HInstance, hRes); TMemoryStream* mstream = new TMemoryStream; mstream->Position = 0; mstream->WriteBuffer(hMem, sz_exe); // evtl. anderen Pfad festlegen mstream->SaveToFile("meine_entpackte.exe"); delete mstream; }
Packages sind eher für eigene (oder auch BCB-) Komponenten.
mfg
kpeter
-
Vielen Dank funktioniert wunderbar.
Zuerst war die Resource falsch benannt, ich dachte ich hätte es geändert, aber
dann hab ich Time.exe in der Projektverwaltung selektiert und den Bezeichner verändert.