D
Dzmitry Kalesnikau
Уважаемые программисты.
Есть следующий код:
Код в принципе рабочий, но почему-то в файл извлекается не весь ресурс, а его определённый кусок. Извлечение прекращается, как только в коде ресурса встречается байт $00. Тоесть извлекается кусок ресурса только до позиции первого же $00 в нём и всё. При этом никаких ошибок не возникает.
В связи с этим и вопросы: Почему так происходит? Как устранить проблему? Какой есть рабочий код для этого?
Есть следующий код:
Код:
program ExtrResSave;
function LoadResource(hModule: CARDINAL; hResInfo: CARDINAL):CARDINAL; stdcall; external 'kernel32.dll' name 'LoadResource';
function FindResource(hModule: CARDINAL; lpName, lpType: PChar): CARDINAL; stdcall; external 'kernel32.dll' name 'FindResourceA';
function LockResource(hResData: CARDINAL): Pointer; stdcall; external 'kernel32.dll' name 'LockResource';
function LoadLibrary(lpLibFileName: PChar): CARDINAL; stdcall; external 'kernel32.dll' name 'LoadLibraryA';
function FreeLibrary(hLibModule: CARDINAL): BOOLEAN; stdcall; external 'kernel32.dll' name 'FreeLibrary';
function GetCommandLine: PChar; stdcall; external 'kernel32.dll' name 'GetCommandLineA';
var pData: Pointer; libr:CARDINAL; f:textfile; s:string;
begin
libr:=LoadLibrary(GetCommandLine);
pData:=LockResource(LoadResource(libr, FindResource(libr,'EXEDATA',PChar(10))));
AssignFile(f,'tmp.dat');
Rewrite(f);
s:=PChar(pData);
Write(f,s);
Closefile(f);
FreeLibrary(libr);
end.
В связи с этим и вопросы: Почему так происходит? Как устранить проблему? Какой есть рабочий код для этого?