Jak zrobic pliki res, rc i dll korzystajacy z nich? chce napisac aplikacje wielojezyczna. help! [glowa]
Plik rc i res to pliki zasobów danego programu (res to skompilowany rc). Do tworzenia tego typu plików istnieją odpowiednie programy do tworzenia ww plików. Pliki dll tworzy się robiąc program z nagłówkiem Library, np:
Library NowaBiblioteka;
Begin
End.
Będzie to pusta biblioteka. I zapewne potrzebna jest Ci ona do przechowywania zasobów. Wspomniane programy, po utworzeniu nowego zasobu, <ort>terz </ort>mogą zapisać go do dll. Lub w Delphi/Bprland Pascal wpisz pod library {$R IstniejącyPlikRes}.
A jak potem z takiego resa, wrzuconego do dll wyciagnąć zasoby? Np. jpg'a.
A gdybym chciał wyciagnąć exe, które mam w dll, które ma {$R jaskis.res} ? W tym resie jest RCDATA dakoder.exe.
Z resa wyciagałem tak:
ResStream := TResourceStream.Create(HInstance,'dekoder', RT_RCDATA);
resstream.SaveToFile('./encdec.exe');
ResStream.Free;
ResStream := TResourceStream.Create(HInstance,'dekoder', RT_RCDATA);
Zamiast HInstance podajesz uchwyt do biblioteki.
A ja się podłącze pod wątek. Dzieki za informację Mlody, nie wiedziałem że zamiast HInstance
można podać uchwyt do biblioteki, po prostu rzadko korzystałem z zasobów a szczególnie w dll.
bierioza: robisz tak jak poniżej, mając już skompilowaną dllke z odpowiednim zasobem 'cosik'.
var
H : Thandle;
JpgSrc : TJpegImage;
Stream : TResourceStream;
begin
H := LoadLibrary('dllka.dll');
if H <> 0 then
begin
JpgSrc := TJpegImage.Create;
Stream := TResourceStream.Create(H, 'cosik', RT_RCDATA);
JpgSrc.LoadFromStream(Stream);
Image1.Picture.Bitmap.Assign(JpgSrc);
Stream.Free;
JpgSrc.Free;
end;
end;
Git-majonez. Jak to mówi Pani Basia.