Skocz do zawartości

Wyciągnąć z resów


Law

Recommended Posts

Zapisac do pliku plik? Nie zabardzo moze rozumiem o co ci chodzi. Czy chcesz zapisac cala strukture jakiegos pliku do zasobow czy na odwrot z zasobow wyciagnac dane do pliku?...Zapisac do pliku plik TTF o nazwie CLASSIC???? Czy TTF moze jest nazwa zasobu. W zasobach nie ma plikow tylko sa dane, ktore moga byc pobrane i dopiero z nich moze byc utworzony plik.

P.S. Zmien kodowanie polskich znakow na swojej stronie bo ich nie widac - krzacza sie.

Link do komentarza
Udostępnij na innych stronach

No stary, jak to nie wiesz? Linkiem praktycznie zalatwilem wszystko. A wiec jesli chcesz wyciagnac zasob z programu, ktory wlasnie ma to zrobic to juz nie musisz korzystac z funkcji LoadLibrary, lub LoadLibraryEx (ta druga najczesciej jest stosowana do wyciagania zasobow z plikow 16 bitowych), tylko wystarczy zrobic tak (kod w delphi):

hres:=FindResource(nil,'CLASSIC','TTF'); //hres - uchwyt zasobu. Jesli blad to zwroci 0;

hMem := LoadResource(nil, hResource);  //bedzie blad to jw. W windows od 95 nie musisz stosowac pozniej FreeResource, bo system robi to automatycznie
  
lpResource := LockResource(hMem); //pobierasz wskaznik do danych
size:=SizeofResource(nil,hres); //pobierasz rozmiar

lpresource to wskaznik a size to rozmiar bloku zasobu. Chyba wiecej nic ci do szczescia nie potrzeba.

Wszystko pisalem praktycznie z pamieci i byc moze cos zle wklepalem (ale nie wydaje mi sie) to wal. ;)

Link do komentarza
Udostępnij na innych stronach

        Res:=FindResource(hInstance, 'CLASSIC', 'TTF');
        ACFont:=LoadResource(hInstance, Res);
        ACData:=LockResource(ACFont);
        CreateFile('cade.classic.ttf', 0, 0, nil, CREATE_NEW,
                   FILE_ATTRIBUTE_NORMAL, 0);
        WriteFile(Plik, ACData^, SizeofResource(hInstance, ACFont), HM, nil);
        CloseHandle(Plik);

Coś spieprzyłem?

Link do komentarza
Udostępnij na innych stronach

var res,ACFont,plik:THandle;
    ACData:pointer;
    HM:cardinal;
begin
  Res:=FindResource(hinstance, 'CLASSIC', 'TTF');
  ACFont:=LoadResource(hinstance, Res);
  ACData:=LockResource(ACFont);
  HM:=SizeofResource(hinstance, res);
  Plik:=CreateFile('classic.ttf', GENERIC_WRITE, 0, nil, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL, 0);
  WriteFile(Plik, ACData^, HM, HM, nil);
  CloseHandle(Plik);
end.

Sam skonfrontuj swoje bledy

Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...