Главная страница
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.013 c
8-94979
real_dimedrol
2003-02-15 12:40
2003.05.29
Помогите разобраться со Scanline


14-95101
Bboy
2003-05-11 13:09
2003.05.29
Можно ли работать с конференциями через Bat???


7-95151
v.topalov
2003-03-28 16:26
2003.05.29
Сервис для COM порта


7-95131
SS
2003-03-24 13:08
2003.05.29
Вывод данных с АЦП


3-94704
lightix
2003-05-07 16:02
2003.05.29
TQuery - какое событие выполняется для каждой записи?