Форум: "Основная";
Текущий архив: 2002.12.12;
Скачать: [xml.tar.bz2];
Вниз
Помогите начинающему Найти похожие ветки
← →
DNT (2002-11-30 14:14) [0]Есть файл. Его необходимо поместить в тело программы и записать на диск при ее запуске, а после стереть.
Как это сделать не используя ресурсы?
Файл можно перевести в формат:
DB 13,23,43,45;
и т.д.
Спасибо.
← →
TTCustomDelphiMaster (2002-11-30 14:31) [1]prog: array [0..4] of byte = ($DB, $13, $23, $43, $45);
← →
DNT (2002-11-30 14:38) [2]А если прога 9k размером?
← →
TTCustomDelphiMaster (2002-11-30 14:45) [3]prog: array [0..9215] of byte = ($DB, $13, $23, $43, $45, ...);
← →
ctapik-net (2002-11-30 20:03) [4]Нет не то, тебе этот файл надо поместить в ресурсы проги, и при необходимости считывать из них
Вот
Шаг первый:
Создайте файл сценария ресурса (*.RC) в обычном текстовом редакторе типа Notepad и добавьте следующую строку:
--------------------------------------------------------------------------------
1 RCDATA "MyPic.jpg"
--------------------------------------------------------------------------------
Первый элемент является просто индексом ресурса. Второй элемент указывает на определенный пользователем ресурс. Третий, он же последний элемент, является именем jpeg-файла.
Шаг второй:
Для компиляции ресурса в .RES-файл используйте Borland Resource Compiler, BRCC32.EXE. В командной строке MS-DOS введите:
--------------------------------------------------------------------------------
BRCC32 MyPic.RC
--------------------------------------------------------------------------------
Это создаст файл ресурса с именем MyPic.RES.
Шаг третий:
Добавьте директиву компилятора к исходному коду вашей программы. Она должна располагаться непосредственно за директивой формы, как показано ниже:
--------------------------------------------------------------------------------
{$R *.DFM}
{$R MyPic.RES}
Шаг четвертый:
Добавьте следующий код к вашему проекту (для этого я создал процедуру):
--------------------------------------------------------------------------------
procedure LoadJPEGfromEXE;
var
MyJPG : TJPEGImage; // Объект - JPEG
ResStream : TResourceStream; // Объект - поток ресурсов
begin
try
MyJPG := TJPEGImage.Create;
ResStream := TResourceStream.CreateFromID(HInstance, 1, RT_RCDATA);
MyJPG.LoadFromStream(ResStream); // Что!? Да, это просто!
Canvas.Draw(12,12,MyJPG); // сделайте это, чтобы увидеть что это действительно работает!
finally
MyJPG.Free;
ResStream.Free;
end;
end; // procedure
Обратили внимание на второй параметр процедуры CreateFromID объекта TResourceStream? Это просто индекс ресурса. Вы можете включить более одного jpeg-изображения в исполняемый модуль приложения, просто добавляя в .RC-файл строчку с другим индексом для каждого включаемого изображения.
Шаг пятый:
Вызовите процедуру, запустите программу и вуаля! Дело сделано.
← →
DNT (2002-11-30 20:41) [5]Да, но мне нужно это сделать не для jpg, а для любого файла и просто его сохранить на диске.
Желательно и ресурсы не использовать.
Все же спасибо!
← →
TTCustomDelphiMaster (2002-11-30 21:44) [6]DNT
Вместо jpg можно использовать любой файл. Записать на диск его можно с помощью TFileStream.
PS: А почему вы так упорно не хотите использовать ресурсы?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.12.12;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c