Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Ressource-Datei erst zur Lautzeit der Programms einbinden (https://www.delphipraxis.net/39202-ressource-datei-erst-zur-lautzeit-der-programms-einbinden.html)

s.h.a.r.k 30. Jan 2005 13:10


Ressource-Datei erst zur Lautzeit der Programms einbinden
 
Hey!

Hab schon die Suche bemüht, aber bin nciht wirklich schlau draus geworden: Und zwar habe ich ein paar Bilder in drei verschiedene Ressource-Dateien gepackt und will diese aber nicht in die EXE-Datei einbinden, da diese dann auf stattliche 3,12 MB anwächst. Mir wäre es um einiges lieber, wenn ich die Ressourcen zur Laufzeit des Programm öffnen könnte!? Ich hab nur keine Ahnung wie ich des machen soll!


mfg shark

s.h.a.r.k 1. Feb 2005 14:27

Re: Ressource-Datei erst zur Lautzeit der Programms einbinde
 
Tja...

Wenns keiner weiß muss ich es halt selber beantworten (hab auch hilfe bekommen - muss ich ja gestehen) Und zwar geht im Prinzip wie mir RES- oder RC-Dateien:

Man erstellt sich eine RC-Datei mit den gewünschten Daten. Danach erstellt man kein neues Projekt sondern ein DLL-Datei. Dabei kann man ruhig die USES-Klauseln rauslöschen, wenn man keine Funktionen darin speichern will, denn dann wird die DLL noch ein bisschen kleiner. Wenn man also diese neue DLL in Delphi erstellt hat geht man im MainMenu von Delphi auf "Projekt" und dann auf "Dem Projekt hinzufügen". Dort wählt man dann die gewünschte einzubindende RC-Datei aus. Danach compiliert man die DLL und kann sie verwenden.

Um die Inhalte der DLL-Datei auszulesen benutzt man den folgenden Code:
Code:
// "mydll" ist der die compilierte DLL
// Vorher muss man noch n Image auf die Form setzen
// der Name "meinbild" ist der Titel den man in der RC-Datei verwendet
procedure TForm1.Button1Click(Sender: TObject);
var
  Lib: Integer;
begin
  Lib := LoadLibraryEx('mydll.dll', 0, LOAD_LIBRARY_AS_DATAFILE);
  if Lib <> 0 then
  try
    Image1.Picture.Bitmap.LoadFromResourceName(Lib, 'meinbild');
  finally
    FreeLibrary(Lib);
  end else
    raise Exception.Create('Fehler in der Ressourcen-DLL...');
end;
Wenn ihr noch Fragen zu diesem Code habt....


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