![]() |
Delphi-Version: 7
ResourceDLL aus Speicher laden und direkt verwenden
Hallo,
Ich habe eine .RES-file, in welcher ein Bild ist. Diese .RES-File lade ich in einer DLL. Also ich habe eine DLL, die NUR aus dieser Resource besteht. Aus dieser DLL habe ich nun wieder eine .RES-Datei erstellt. Diese .RES-Datei möchte ich in den Speicher laden (hat funktioniert) und anschließend das Bild als String einlesen. Jemand eine Idee? |
AW: ResourceDLL aus Speicher laden und direkt verwenden
Du hast eine Ressourcen-DLL nochmals als Ressource eingebunden? Soll das nur zum Üben sein, oder welchen Mehrwert versprichst Du Dir gegenüber einer "normalen" Ressource? Ansonsten sollte das doch über LoadFromResourceName zu machen sein, sofern Du an das Instanzenhandle der DLL herankommst, wenn ich nicht irre.
|
AW: ResourceDLL aus Speicher laden und direkt verwenden
Zitat:
Ich nehm sie mir aus der Resource, lade sie in den Speicher und rufe ihre funktionen auf. So muss ich die DLL nicht auf dem Datei-System droppen :) Die Lösung ist ja klar, nur weiß ich nicht wie ichs in der Praxis umsetze:
Delphi-Quellcode:
Ich suche nach einer möglichkeit IN meiner Resourcen-DLL auf die resource zuzugreifen^^
library adpResources;
{$R ress.RES} function FileToStr(sPath:string; var sFile:string):Boolean; var hFile: THandle; dSize: DWORD; dRead: DWORD; begin Result := FALSE; hFile := CreateFile(PChar(sPath), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0); if hFile <> 0 then begin dSize := GetFileSize(hFile, nil); if dSize <> 0 then begin SetFilePointer(hFile, 0, nil, FILE_BEGIN); SetLength(sFile, dSize); if ReadFile(hFile, sFile[1], dSize, dRead, nil) then Result := TRUE; CloseHandle(hFile); end; end; end; <Ab jetzt Pseudo-Code> function Exporter(Resource : Resourcename) : String; stdcall; begin FileToStr(Resourcename,result); end; exports Exporter index 1; begin end. EDIT:// Und dass ich resourcen in eine dll einbinde und diese dll dann wieder in eine resource packe hat alles sinn ;) |
AW: ResourceDLL aus Speicher laden und direkt verwenden
Also ist das doch keine reine Ressourcen-DLL. Allerdings verstehe ich Deinen Code in diesem Zusammenhang nicht, ich denke, Du willst das Bild aus der Ressource der DLL laden und keine Datei?
|
AW: ResourceDLL aus Speicher laden und direkt verwenden
Ich habe eine DLL-Datei, in welcher sich ein Bild als Resource befindet.
Diese DLL habe ich wieder in eine Resource gepackt. In meinem Programm lade ich die DLL aus der Resource direkt in den Speicher. Nun könnte ich ohne die DLL zu droppen, auf die export-Funktionen zugreifen. Im obigen Beispiel die Funktion "Exporter" die mir einen String zurückgibt. Diese Funktion "Exporter" soll das Bild, was sich ja als Resource in der DLL selber befindet als String einlesen und mir dann zurückgeben :) |
AW: ResourceDLL aus Speicher laden und direkt verwenden
Dann versuch es doch einmal mit LoadFromResourceName, um das Bild zu laden, und packe es dann in einen TStringStream. Allerdings könnte es je nach Delphi-Version zu Problemen kommen, wenn Du nicht entweder Sharemem einbindest oder auf PChar ausweichst. Und was passiert, wenn ein Byte des Bildes 0 (Stringendezeichen) ist?
|
AW: ResourceDLL aus Speicher laden und direkt verwenden
Zitat:
|
AW: ResourceDLL aus Speicher laden und direkt verwenden
Na dann probier es mal aus. Allerdings bin ich gerade nicht sicher, ob bei einer DLL nun hInstance oder GetModuleHandle der richtige Parameter für LoadFromResourceName ist.
|
AW: ResourceDLL aus Speicher laden und direkt verwenden
Zitat:
|
AW: ResourceDLL aus Speicher laden und direkt verwenden
Ich weiß es auch nicht, deshalb sag ich ja: ausprobieren.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:09 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