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

Вниз

Как в ресурс exe-шку запехнуть а потом в рантайме ее от туда   Найти похожие ветки 

 
chuvak   (2003-05-08 15:48) [0]

випихивать? А как сделать чтобы нельзя было ресуры просмотреть с помошью утилит?


 
KSergey ©   (2003-05-08 16:30) [1]

1) Смотря что запихнуто
см. LoadAccelerators, LoadBitmap, LoadIcon, LoadMenu, LoadString ну и у компонент есть свои методы загрузки из ресурсов (например, TBitmap.LoadFromResourceID)

2) Чтобы нельзя было посмотреть - никак. Ну либо пихать в каком-нибудь своем формате (зашифрованном, возможно) - и потом уже с этим разгребаться. Как раболтать с произвольными ресурсами - ну поищите наконец в яндексе.


 
chuvak   (2003-05-17 21:15) [2]

Я же говорю что, мне надо в ресурс моей программы запихнуть другой файл, например exe-шник.


 
Palladin ©   (2003-05-17 21:47) [3]

а тебе что то не то написали, я не понял?


 
_Narayan_   (2003-05-17 22:45) [4]

1) создаёшь файл .rc (например Name1.rc)
2) в нём при помощи блокнота пишешь MyFile rcdata MyFile.exe
3) для удобства кидаешь MyFile.exe и Name1.rc в папку с твоим проектом
4) обратно в делфи.... выбираешь в меню Project -> Add To Project
(Shift+F11)
5) в появившемся окне ставишь тип файлов .rc и выбырвешь свой Name1.rc
6) теперь пишешь функцию для извлечения - вот она


function mCreateDB(const Path: String; FoultIfExists: Boolean): Boolean;
const RT_RCDATA = PChar(10);
var rs: TResourceStream;
fs: TFileStream;
begin
Result:=False;
If not(FileExists(Path) and FoultIfExists) Then
Begin
If DeleteFile(Path) or not FileExists(Path) Then
Begin
Try
rs:=TResourceStream.Create(hInstance, "DATABASE", RT_RCDATA);
fs:=TFileStream.Create(Path, fmCreate);
fs.CopyFrom(rs, rs.Size);
fs.Free;
rs.Free;
Result:=True;
Except
Result:=False;
end;
end;
end;
end;


Параметр Path - путь и имя создаваемого файла
Параметр FoultIfExists - определяет поведение функции в случае, когда указанный файл существует (не сложно догадаться как именно)
В случае успеха функция возвращает TRUE


 
_Narayan_   (2003-05-17 22:56) [5]

простите функцию не подправил, надо так:

function mCreate(const Path: String; FoultIfExists: Boolean): Boolean;
const RT_RCDATA = PChar(10);
var rs: TResourceStream;
fs: TFileStream;
begin
Result:=False;
If not(FileExists(Path) and FoultIfExists) Then
Begin
If DeleteFile(Path) or not FileExists(Path) Then
Begin
Try
rs:=TResourceStream.Create(hInstance, "MyFile", RT_RCDATA);
fs:=TFileStream.Create(Path, fmCreate);
fs.CopyFrom(rs, rs.Size);
fs.Free;
rs.Free;
Result:=True;
Except
Result:=False;
end;
end;
end;
end;



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

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

Наверх




Память: 0.48 MB
Время: 0.014 c
1-94800
bloodman
2003-05-18 20:44
2003.05.29
Compile vs Build


3-94695
Анна
2003-05-06 19:51
2003.05.29
Запрос


1-94833
BJValentine
2003-05-19 18:11
2003.05.29
Outlook Express


1-94816
Holy
2003-05-19 12:57
2003.05.29
Перекодировка текста


4-95176
Sirus
2003-04-01 08:58
2003.05.29
Как открыть форму из DLL немодально???