Entwickler-Ecke

Sonstiges (Delphi) - bilder in dll zur laufzeit speichern


elundril - Do 02.11.06 16:29
Titel: bilder in dll zur laufzeit speichern
wie kann ich bilder zur laufzeit in eine Dll einbinden?? oder geht das gar nicht??

lg el


Bernhard Geyer - Do 02.11.06 21:48

Was meinst Du damit genau? Wenn du die in der DLL hinterlegen willst so mach das z.B. einfach als Resource.


mkinzler - Do 02.11.06 21:50

Du braüchtset dazu ja einen Ressourcencompiler und einen Linker, den du mitliefern müsstest.


Martok - Do 02.11.06 23:44

user profile iconmkinzler hat folgendes geschrieben:
Du braüchtset dazu ja einen Ressourcencompiler und einen Linker, den du mitliefern müsstest.


Ich sag mal: Nö.
:D

Es gibt da die Funktion UpdateResource. Such mal danach. Ich guck mal, irgendwo hatte ich mal was mit gemacht.
Hier:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure BmpToRes(bmp:TBitmap;ResID:integer;FileName:string);
var hres:THandle;
    ms:TMemoryStream;
    hs:integer;

begin
  hs:= sizeof(TBitmapFileHeader);
  hres:= BeginUpdateResource(PChar(FileName), false);
  ms:= TMemoryStream.Create;
  try
    bmp.PixelFormat:= pf4bit;
    bmp.SaveToStream(ms);
    UpdateResource(hres,RT_BITMAP,MAKEINTRESOURCE(ResID),GetSystemDefaultLangID,
                   (PChar(ms.Memory)+hs), ms.Size-hs);
  finally
    EndUpdateResource(hres,false);
    ms.free;
  end;
end;


Bindet BMP als Ressource mit der ID ResID in FileName ein.
Irgendwas muss aber da dran komisch sein, die ist auskommentiert gewesen. Das kann aber damit zu tun haben, dass ich ein komisches Format hatte/wollte/haben musste. (Hatte es dann über ResourceHacker-Kommandozeilen-Aufrufe gelöst.)


elundril - Fr 03.11.06 16:29

könnte mir irgendjemand vl. erklären wie der code funktioniert?? ich wills ja immerhin nicht nur kopieren sonden auch kapieren!

lg el