![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Снова Ресурсы
SVM © (2002-10-26 00:45:00)Как какой-нибудь файл, например dll загнать в ресурс, а во время выполнения программы сохранить этот ресурс в файл! ИСПОЛЬЗУЯ ТОЛЬКО WINAPI!
Pumpkin (2002-10-28 23:20:00) [1]Сорри, держи:
var
F: TFileStream;
HR, HG: THandle;
P: Pointer;
Sz: Integer;
begin
HR := FindResource( HInstance, "MYDLL", RT_RCDATA );
HG := LoadResource( HInstance, HR );
P := LockResource( HG );
Sz := SizeofResource( HInstance, HR );
...
// поинтер известен ( P ) и размер известен ( Sz )
// сохраняй буфер в файл.
...
end;
SVM (2002-10-28 22:16:00) [2]Я же сказал, что используя только WinApi.
Pumpkin (2002-10-27 22:26:00) [3]Сохранить в файл:
procedure TForm1.Button1Click(Sender: TObject);
var
R: TResourceStream;
F: TFileStream;
begin
R := TResourceStream.Create( HInstance, "MYDLL", RT_RCDATA );
F := TFileStream.Create("с:\my_path\mydll.dll", fmCreate );
F.CopyFrom( R, 0 );
F.Free;
R.Free;
end;
SVM (2002-10-27 22:18:00) [4]Ну это-то понятно, а как потом при выполнении программы сохранить эту библиотеку куда-нить.
asmith (2002-10-27 14:19:00) [5]1). открываем текстовый редактор и пишем :
MYDLL RCDATA mydll.dll
и записываем всё это в файл Lib.rc
2). Компилируем Lib.rc :
brcc32.exe Lib.rc<P></P>
3). Получили Lib.res, линкуем его к основному проекту:
{$R Lib.res}
SVM (2002-10-27 12:31:00) [6]Вопрос остается в силе
SVM (2002-10-27 00:40:00) [7]Мне надо просто задать ресурс при компиляции исполняемого модуля, а не изменнение ресурса во время выполнения программы.
SPeller (2002-10-26 03:12:00) [8]Под NT платформой - смотри BeginUpdateResource и иже с ними, а под 9Х - пиши свой компилятор ресурсов, инфа на эту тему в инете есть.