Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi *.dll Datei zur Resource datei *.res machen (https://www.delphipraxis.net/77574-%2A-dll-datei-zur-resource-datei-%2A-res-machen.html)

newuser01 21. Sep 2006 11:32


*.dll Datei zur Resource datei *.res machen
 
Hallo wie in diesem Beitrag von "Carlo91" beschrieben kann man eine dll Datei ja als Resource im Projekt einbinden. Aber wie wird erst einmal eine dll-datei zur Resource-Datei also xy.dll zur xy.res ?

Luckie 21. Sep 2006 12:59

Re: *.dll Datei zur Resource datei *.res machen
 
Bitte genau lesen:
Zitat:

Das ist eine exe die die bass.dll aus den Resourcen entpackt (mit sourcecode)!

newuser01 21. Sep 2006 14:05

Re: *.dll Datei zur Resource datei *.res machen
 
Zitat:

Das ist eine exe die die bass.dll aus den Resourcen entpackt (mit sourcecode)!
Das weiß ich doch nur liegt dem Projekt von "Carlo91" keine bass.dll bei sondern eine DLL.res also wurde diese *.res irgendwie aus der bass.dll erstellt und genau das will ich wissen wie das geht

Prototypjack 21. Sep 2006 14:09

Re: *.dll Datei zur Resource datei *.res machen
 
Moin!
Die DLL wird nicht zur RES sondern sie befindet sich in ihr. Du musst dir das wie ein Paket vorstellen.
Das ganze kannst du mit dem Resource-Compiler von Borland mittels eines RC-Sriptes leicht selbst erstellen.
Da ich aber schon seit längerem keine RES Dateien mehr erstellt habe kann ich dir jetzt leider den genauen Code nicht nennen, entschuldigung.

Gruß,
Max

hoika 21. Sep 2006 14:10

Re: *.dll Datei zur Resource datei *.res machen
 
Hallo,

http://delphi.about.com/od/objectpas.../aa021301a.htm

dort auf die 2. Seite gehen.


Heiko

Muetze1 21. Sep 2006 14:11

Re: *.dll Datei zur Resource datei *.res machen
 
Leg dir eine Textdatei an. Nenne Sie "xxx.rc" und schreibe folgendes hinein:

Zitat:

Zitat von xxx.rc
SYMBOLNAME RCDATA bass.dll

Danach das ganze mit folgendem Aufruf des Borland Resourcen Compilers in dem Verzeichnis zu einer RES Datei compilieren:
Zitat:

Zitat von command line
brcc32 xxx.rc

Danach hast du eine RES Datei welche noch per "{$R xxx.res}" im Quelltext in die EXE kompiliert werden muss. Die DLL Extraction aus den Resourcen braucht ja einen Identifier um die Daten extrahieren zu können. Dies ist der erste Begriff in der RC Datei, also hier "SYMBOLNAME".

newuser01 21. Sep 2006 15:14

Re: *.dll Datei zur Resource datei *.res machen
 
versteh ich nicht ganz also in der Unit wird die res wie folgt aufgerufen

Delphi-Quellcode:
var
  Form1: TForm1;
  DLLRes: TResourceStream;


implementation

uses Unit2;

{$R *.DFM}
{$R DLL.res}
Delphi-Quellcode:
//und hier wird die dll entpackt falls sie nicht vorhanden ist
if not FileExists(ExtractFilePath(Application.ExeName)+'\bass.dll') then
begin
  DLLRes :=TresourceStream.CreateFromID(0, 101, PChar('DLL'));
  DLLRes.SaveToFile(ExtractFilePath(Application.ExeName)+'\bass.dll');
end
   else
       begin
        // dll vorhanden
end;//if

Also was genau muss ich nun in der DLL.rc schreiben um genau die selbe DLL.res mit "brcc32 DLL.rc" zu erzeugen ?

hoika 21. Sep 2006 15:42

Re: *.dll Datei zur Resource datei *.res machen
 
Hallo,

nehmen wir mal an, die Dll heisst Help.dll.

Deine erzeugst du eine Textdatei dll.rc,
die nur die folgenden Zeile besitzt:


MeineHelpDLL RCDATA Help.dll


Dann schnappst du dir den brc32
und rufst ihn auf mit brc32 -r dll.rc.

Damit bekommst du eine dll.res, die die Help.dll enthält.
"MeineHelpDLL" brauchst du für FindResource.


Heiko

newuser01 21. Sep 2006 15:46

Re: *.dll Datei zur Resource datei *.res machen
 
was meinst du mit "FindResource" ?
Delphi-Quellcode:
//"FindResource" meinst du damit diese Zeile und wenn ja wie wird dann die Resource hier identifiziert
DLLRes :=TresourceStream.CreateFromID(0, 101, PChar('DLL'));

hoika 22. Sep 2006 07:01

Re: *.dll Datei zur Resource datei *.res machen
 
Hallo,

in meinem Fall

Create(0, 'MeineHelpDLL', 'RT_RCDATA');

Wie du siehst, nehme ich das normale Create,
weil ich keine ResId habe.


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:58 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