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

Вниз

Помогите начинающему   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
4-36476
Nubie
2002-10-29 17:08
2002.12.12
?DialogBox?


14-36336
Ketmar
2002-11-20 10:12
2002.12.12
и снова WindowBlinds.


3-36072
VaZ
2002-11-26 09:58
2002.12.12
Нужна помощь! Экспорт в dbf из Interbase


1-36132
SergeyDove
2002-12-03 13:55
2002.12.12
Не запускается проект


3-35982
Hiqwer
2002-11-20 19:43
2002.12.12
Oracle. Компоненты DOA. Где TimeOut?