Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.03;
Скачать: CL | DM;

Вниз

Dll в EXE. модули windows, messages //маленький размер   Найти похожие ветки 

 
FFx01 ©   (2006-07-23 11:33) [0]

Уважаемые, у меня вопрос, возможно ли в дельфи встоить длл(15 кб) в ехе и потом ее распаковать. Используя только модули windows, messages.(так как важно написать маленький по размеру проект)

Или как можно распаковать {$R *.res} без использования SysUtils, так как в дельфи 7 модуль слишком громоздкий.

Ведь как-то возможно создать, что-то типо stream массива и записать туда еще в исходнике.

Или если можно "Как создать в EXE Ресурс" http://forum.sources.ru/index.php?showtopic=148176
расскажите как этот модуль использовать для таких целей.

Была даже мысль через base64 делать :D


 
Ketmar ©   (2006-07-23 12:33) [1]

FindResource()/SizeofResource()/LoadResource()


 
FFx01 ©   (2006-07-23 12:59) [2]

var
 FindHandle, ResHandle: THandle;
 ResPtr: Pointer;
begin
 FindHandle := FindResource(HInstance, "resname.res", "g7dll.dll");
 if FindHandle <> 0 then
 begin
   ResHandle := LoadResource(HInstance, FindHandle);
   if ResHandle <> 0 then
   begin
     ResPtr := LockResource(ResHandle);
     if ResPtr <> nil then
     
     UnlockResource(ResHandle);
   end;
   FreeResource(FindHandle);
 end;
end;

попытался написать так, но как сохранить длл рядом с ехе.


 
Fay ©   (2006-07-23 13:09) [3]

"resname.res", "g7dll.dll"
Чё это?


 
DTStamp   (2006-07-23 13:20) [4]


function ExtractResource(const ResName, FileName: String): Boolean;
var
 hFile: THandle;
 hResInfo, hResData: THandle;
 ResSize, nBW: Cardinal;
 PRes: Pointer;

begin
 Result := False;
 hResInfo := FindResource(hInstance,PChar(ResName),RT_RCDATA);
 if hResInfo = 0 then
   Exit;
 ResSize := SizeOfResource(hInstance,hResInfo);
 hResData := LoadResource(hInstance,hResInfo);
 PRes := LockResource(hResData);
 hFile := CreateFile(PChar(FileName),GENERIC_WRITE,0,nil,CREATE_NEW,0,0);
 if hFile <> INVALID_HANDLE_VALUE then
 begin
   WriteFile(hFile,PRes^,ResSize,nBW,nil);
   CloseHandle(hFile);
 end;
 Result := Assigned(PRes) and (FileExists(FileName));
end;


 
DTStamp   (2006-07-23 13:27) [5]

Да, FileExists можно заменить на

var
 FileAttr: DWORD;
...
...
FileAttr := GetFileAttributes(PChar(FileName));
Result := Assigned(PRes) and (FileAttr <> DWORD(-1));


 
FFx01 ©   (2006-07-23 15:48) [6]

DTStamp, респектище..

тема закрыта.



Страницы: 1 вся ветка

Текущий архив: 2006.12.03;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.03 c
15-1163100747
leonidus
2006-11-09 22:32
2006.12.03
Ищу готовый модуль или алгоритм морфологического анализа русского


4-1153296669
Интересующийся
2006-07-19 12:11
2006.12.03
Два вопроса о региональных стандартах


15-1163136696
DelphiN!
2006-11-10 08:31
2006.12.03
Сегодня начальство попросило написать свою OC


2-1163843897
GhostOld
2006-11-18 12:58
2006.12.03
Как удалить из строки знаки переноса строки #13#10?


6-1152600171
dwar
2006-07-11 10:42
2006.12.03
IndI ,IdHttp Connection reset by peer