![]() |
*.dll Datei zur Resource datei *.res machen
Hallo wie in diesem
![]() |
Re: *.dll Datei zur Resource datei *.res machen
Bitte genau lesen:
Zitat:
|
Re: *.dll Datei zur Resource datei *.res machen
Zitat:
|
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 |
Re: *.dll Datei zur Resource datei *.res machen
|
Re: *.dll Datei zur Resource datei *.res machen
Leg dir eine Textdatei an. Nenne Sie "xxx.rc" und schreibe folgendes hinein:
Zitat:
Zitat:
|
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 ? |
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 |
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')); |
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 |
Re: *.dll Datei zur Resource datei *.res machen
Hallo Heiko
Es funktioniert leider nicht mit der bass.dll ich habe folgendes gemacht
Delphi-Quellcode:
als nächstes habe ich die bass.res in Delphi eingebunden mit
//bass.rc erstellt mit folgenden Inhalt
bassdll RCDATA bass.dll //danach mit "brc32 -r bass.rc" Compiliert
Delphi-Quellcode:
und so wird sie entpackt
var
Form1: TForm1; DLLRes: TResourceStream; implementation uses Unit2, Unit3; {$R *.DFM} {$R bass.res}
Delphi-Quellcode:
Das funktioniert aber leider nicht die DLL wird nicht entpackt. Ich habe jetzt mit Tipp von "Carlo91" mit Visual C++ eine *.res Scriptdatei erstellt und die bass.dll importiert danach als bass.res abgespeichert und mit dieser*res funktioniert es jetztif not FileExists(ExtractFilePath(Application.ExeName)+'\bass.dll') then begin //wenn dll nicht vorhanden DLLRes :=TResourceStream.Create(0, 'bassdll', 'RT_RCDATA'); DLLRes.SaveToFile(ExtractFilePath(Application.ExeName)+'\bass.dll'); end else begin end;//if Entpackt wird sie so
Delphi-Quellcode:
//ich könnte auch zwei dll's einbinden muss dann nur die ID ändern also nicht 101 sondern 102 das funktioniert bestens anders bekomme ich es leider nicht hin :mrgreen:
DLLRes :=TResourceStream.CreateFromID(0, 101, PChar('DLL'));
DLLRes.SaveToFile(ExtractFilePath(Application.ExeName)+'\bass.dll'); DLLRes :=TResourceStream.CreateFromID(0, 102, PChar('DLL')); |
Re: *.dll Datei zur Resource datei *.res machen
Zitat:
|
Re: *.dll Datei zur Resource datei *.res machen
kleiner Fehler große Wirkung DANKE Flocke und allen anderen auch !!!
|
Re: *.dll Datei zur Resource datei *.res machen
Dieser Beitrag hier "*dll Datei aus Resource entpacken" wäre doch für die Code-Library geeignet oder was denkt ihr darüber ?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz