Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi eine belibige datei in ein prog einbinden (https://www.delphipraxis.net/21321-eine-belibige-datei-ein-prog-einbinden.html)

NikoMitDaMacht 30. Apr 2004 20:47


eine belibige datei in ein prog einbinden
 
servus. ich weiss das man sounds, bitmaps und icons in ein
programm einbinden kann, geht das auch mit einer belibigen datei und wenn
kann man sie dann "Extrahieren"?

Luckie 30. Apr 2004 20:54

Re: eine belibige datei in ein prog einbinden
 
Ja und ja.

Kuck dir dazu mal meinen Crypter2_7 an: http://www.luckie-online.de/Ablage/Alt/ Da habe ich eine DLL alös Ressource einmgebunden, die zur Laufzeit extrahiert wird.

Willst du eine VCL Lösung zum Extrahieren, kuck dir mal die Klasse TResourceStream in der Hilfe an.

City Light 30. Apr 2004 21:53

Re: eine belibige datei in ein prog einbinden
 
Suchst du vielleicht das hier...
Delphi-Quellcode:
// Getestet mit D4 unter WinME

// Um eine andere EXE (oder DLL, oder..oder..) als Ressource in das eigene
// Programm einzubinden, muss man logischerweise zunächst eine Ressource
// erzeugen. Dazu kann man sich ein kleines Zusatzprogramm schreiben, welches
// das automatisch erledigt:

uses shellapi;

// Bedingung ist, dass die BRCC32.EXE im Path zu finden ist,
// sonst muss der qualifizierte Name angegeben werden,
// z.B.: C:\Programme\Borland\Delphi4\Bin\brcc32.exe
function res_erzeugen(exe,flr:string):integer;
var
tf:tfilestream;
s:string;
begin
s:='TEST RCDATA '+exe;
tf:=tfilestream.create(flr+'exe.rc',fmcreate);
tf.writebuffer(s[1],length(s));
tf.free;
result:=shellexecute(application.handle,'open',
'brcc32.exe',pchar(flr+'exe.rc'),pchar(flr),sw_hide);
end;

// Aufruf zur Verarbeitung der Beispieldatei "uhr.exe". Die Ressource
// wird im selben Folder wie das aufrufende Programm gespeichert.
procedure TForm1.Button1Click(Sender: TObject);
var NameDerExe:string;
begin
NameDerExe:='d:\uhr.exe'; // oder 'test.dll' oder..oder..
if res_erzeugen(NameDerExe,extractfilepath(application.exename))<=32
then showmessage('Fehler aufgetreten');
end;

// Nachdem die Ressource namens "EXE.RES" erzeugt wurde, kann sie in andere
// Programme eingebunden werden.
// Siehe auch AVI-Resourcen mit Mediaplayer abspielen

...
implementation

{$R *.DFM}
{$R EXE.RES}

uses shellapi;

procedure TForm1.Button1Click(Sender: TObject);
var
tr:TResourcestream;
NeueDatei:string;
begin
NeueDatei:='uhr.exe';
tr:=tresourcestream.create(hinstance,'TEST',RT_RCDATA);
tr.savetofile(NeueDatei);
tr.free;
// falls es sich z.B. um EXE handelt, kann diese dann gleich gestartet werden
shellexecute(handle,'open',pchar(NeueDatei),nil,nil,sw_shownormal);
end;

Luckie 1. Mai 2004 13:02

Re: eine belibige datei in ein prog einbinden
 
Das läuft so auf deinem System, bzw. auf Systemen mit installierten Delphi. Aber was ist auf anderen Systemen? Willst du da sagen: "Kaufen sie sich bitte Delphi, damit sie mein Programm benutzen können."?

Sharky 1. Mai 2004 15:16

Re: eine belibige datei in ein prog einbinden
 
Zitat:

Zitat von Luckie
Das läuft so auf deinem System, bzw. auf Systemen mit installierten Delphi. Aber was ist auf anderen Systemen? Willst du da sagen: "Kaufen sie sich bitte Delphi, damit sie mein Programm benutzen können."?

@Luckie: Wenn ich das richtig sehe sind das da oben 2 "Programme"
Nummer 1 ist dafür da um mit der Datei eine RES zu erzeugen.
Nummer 2 ist ein Beispiel wie mann die "Datei" dann wieder auslesen kann.

NikoMitDaMacht 1. Mai 2004 20:06

Re: eine belibige datei in ein prog einbinden
 
Danke City Lite das hat soweit geklappt doch die *.res erzeugen mit extractfilepath(application.exename) also
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var NameDerExe:string;
begin
NameDerExe:='d:\uhr.exe'; // oder 'test.dll' oder..oder..
if res_erzeugen(NameDerExe,extractfilepath(application.exename))<=32
then showmessage('Fehler aufgetreten');
end;
geht nich ich musste es mit einen leeren string machen
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var NameDerExe:string;
begin
NameDerExe:='d:\uhr.exe'; // oder 'test.dll' oder..oder..
if res_erzeugen(NameDerExe,'')<=32
then showmessage('Fehler aufgetreten');
end;

NikoMitDaMacht 1. Mai 2004 21:30

Re: eine belibige datei in ein prog einbinden
 
Ähhm... kann man diese datei auch direkt aus dem programm starten (ohne erst aus der resource zu kopieren)

Luckie 1. Mai 2004 21:47

Re: eine belibige datei in ein prog einbinden
 
#Auf NT Systemen wäre es möglich, aber nicht auf Windows 9x Systemen. Aber, glaub mir, das was du für NT SDysteme dazu machen müstest, willst du nicht wirklich machen.

NikoMitDaMacht 1. Mai 2004 21:53

Re: eine belibige datei in ein prog einbinden
 
OK wenn du es sagst dann vertrau ich dir (kanns mir vorstellen)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:46 Uhr.

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