Einzelnen Beitrag anzeigen

Lyan

Registriert seit: 5. Aug 2011
188 Beiträge
 
#3

AW: ResourceDLL aus Speicher laden und direkt verwenden

  Alt 1. Okt 2012, 15:41
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.
Das hat den Sinn, dass ich diese DLL nun direkt aus dem Speicher laden kann.
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:
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.
Ich suche nach einer möglichkeit IN meiner Resourcen-DLL auf die resource zuzugreifen^^


EDIT:// Und dass ich resourcen in eine dll einbinde und diese dll dann wieder in eine resource packe hat alles sinn

Geändert von Lyan ( 1. Okt 2012 um 15:46 Uhr)
  Mit Zitat antworten Zitat