![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
проблема с WriteFile [D7, WinXP]
Dot © (2005-08-27 12:13:00)Приветствую Вас, Мастера.
В челях самопознания написал программу, которая будет доставать из своих ресурсов EXE-файл и сохранять его на диск.
******* test.rc ********
Num EXEFILE C:\call.exe
************************
Скомпилировал brcc32.exe test.rc
call.exe - просто выводит MessageBox
******* ExRes.dpr ******
program ExRes;
uses Windows;
{$R test.res}
var
hRes : HRSRC;
hRD : HGLOBAL;
rSize : DWORD;
hMem : Pointer;
hFile : THandle;
iBW : Cardinal;
begin
hRes := FindResource(0,PChar('EXEFILE'),Pchar('Num'));
hRD := LoadResource(0, hRes);
hMem := LockResource(hRD);
rSize:= SizeofResource(0,hRes);
hFile:= CreateFile(PChar('1.exe'),GENERIC_WRITE,FILE_SHARE_READ,nil,CREATE_NEW,0,0);
WriteFile(hFile,hMem,rSize,iBW,nil);
CloseHandle(hFile);
end.
************************
Вот у меня проблема с параметром iBW, в документации написано NumbersOfByte, этот код работает на си если писать так
DWORD iBW;
WriteFile(hFile,hMem,rSize,&iBW,0);
однако в дельфи файл создается, такой же по размеру как и должен быть, однако половина файла забита нулями и он откаывается работать.
Помогите пожалуйста, как надо объявить правильно эту переменную.
Brother (2005-09-09 11:28:00) [1]Эх, информация, вкликая вещь!
И тот силен у кого ее много! :)
tesseract (2005-08-29 10:31:00) [2]Вообще литературы для начинающих крайне мало. А вещь то нужная.
Marser (2005-08-27 14:21:00) [3]
> Не можешь ли объяснить, почему имеено так? что было
> неправильно?
Оператор ^ обозначает доступ к данным, на которые указатель ссылается. Иначе ты получаешь доступ к значению самого указателя :-)
Dot (2005-08-27 13:07:00) [4]tesseract © (27.08.05 12:32) [2]
попробуй hMem^
Огромное Спасибо!
Не можешь ли объяснить, почему имеено так? что было неправильно?
tesseract (2005-08-27 12:32:00) [5]попробуй hMem^
Джо (2005-08-27 12:22:00) [6]
> В челях самопознания написал программу
В целях самопознания медитируют, а не программы пишут %)