Форум: "Основная";
Текущий архив: 2003.05.29;
Скачать: [xml.tar.bz2];
ВнизКак в ресурс 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c