Mam w zasobach programu jakiś inny programik. Moje pytanie brzmi:
Jak "wyciągnąć" z zasobów ten plik i zapisać go na dysku? hmm...
Pozdrowienia, BigLama :P
Delphi5
http://biglama.w.interia.pl
Mam w zasobach programu jakiś inny programik. Moje pytanie brzmi:
Jak "wyciągnąć" z zasobów ten plik i zapisać go na dysku? hmm...
Pozdrowienia, BigLama :P
Delphi5
http://biglama.w.interia.pl
Odpowiedź jest w faq - dokładnie w wersji programowej.
A zresztą:
{ wydobywanie RCDATA z zasobów}
function SaveRes(ResName, DestFile: PChar; var ErrMsg: PChar):boolean;
var
BytesWritten,
ResSize: cardinal;
HFile,
HResInfo,
HRes: THandle;
PRes: pointer;
begin
ErrMsg:= '';
{wyszukanie zasobu:}
HResInfo:= FindResource(hInstance, Resname, RT_RCDATA);
if HResInfo = 0 then
begin
ErrMsg:= PChar('Nie można znależć zasobu: '+#39+Resname+#39+' .');
Result:= false;
Exit;
end;
ResSize:= SizeOfResource(hInstance, HResInfo);
{wczytanie zasobu:}
HRes:= LoadResource(hInstance, HResInfo);
{utworzenie wskaźnika na załadowany zasób:}
PRes:= LockResource(HRes);
{utworzenie nowego pliku:}
HFile:= CreateFile( PChar(DestFile),
GENERIC_READ or GENERIC_WRITE ,
FILE_SHARE_READ,
nil,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL, 0);
{zapisanie zasobu plikowego:}
WriteFile(HFile, PRes, ResSize, BytesWritten, nil);
if HFile = INVALID_HANDLE_VALUE then
ErrMsg:= PChar(ErrMsg + #13#13 + 'Plik: '+#39+DestFile+#39+ #13 +
'nie został prawidłowo utworzony.');
if BytesWritten <> ResSize then
ErrMsg:= PChar(ErrMsg + #13#13 + 'Plik nie został poprawnie zapisany.');
Result:= (HFile <> INVALID_HANDLE_VALUE) and (BytesWritten = ResSize);
FreeResource(HRes);
{zamknięcie pliku:}
CloseHandle(HFile);
end;
*==============================================================================
var
F: file;
Fres: Integer;
begin
AssignFile(F, 'd:\res.txt'); * stworz plik...
Rewrite(F, 1);
Fres := FindResource(hInstance, 'RES_TXT', RT_RCDATA);
BlockWrite(F, LockResource(LoadResource(hInstance, Fres))</sup>,
SizeofResource(hinstance, Fres));
Closefile(F); // zamknij plik
;;
Żywcem wyrżnięte z programu.--, tradycyjnie pozdrawiam - Numi.
A nie łatwije by było tak :
var
Res : TResourceStream;
begin
Res := TResourceStream.Create(hInstance, 'xxx', RT_RCDATA);
Res.SaveToFile('C:\xxx.exe');
Res.Free;
end;
Gdzie "xxx.exe" to nazwa twojego pliku--Ozyrys Pozdrawiam {hello}
Delphi 6
Dzięki.
A nie łatwije by było tak :
>
>var
> Res : TResourceStream;
>begin
> Res := TResourceStream.Create(hInstance, 'xxx', RT_RCDATA);
> Res.SaveToFile('C:\xxx.exe');
> Res.Free;
> end;
>
>
>Gdzie "xxx.exe" to nazwa twojego pliku
Łatwiej i co z tego? :-)--, tradycyjnie pozdrawiam - Numi.
Numi napisał:
>Łatwiej i co z tego? :-)
No cóż ja sobie lubie ulatwiać zycie.... :-)
--Ozyrys Pozdrawiam {hello}
Delphi 6