Главная страница
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.013 c
1-36116
_jek
2002-12-03 10:13
2002.12.12
Алиас (создание в коде)


1-36192
MAN-IN-RED
2002-12-01 14:37
2002.12.12
?


3-36055
ao1973
2002-11-25 07:23
2002.12.12
Транзакции в


1-36270
Palladin
2002-11-30 23:22
2002.12.12
вот такой вот вопрос


4-36492
_landy
2002-10-25 14:25
2002.12.12
запустить программу от имени другого пользователя