Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-94807
Renegate
2003-05-19 08:29
2003.05.29
Графика в RichEdit.


3-94672
bardi
2003-05-07 14:08
2003.05.29
Очистка кэша


9-94650
ogo
2002-12-15 10:41
2003.05.29
текстурирование


11-94780
edik
2002-08-29 15:18
2003.05.29
Обработка событий


14-95098
zhenya
2003-05-11 20:20
2003.05.29
Регенерация текста?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский