Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.007 c
1-36180
^Sanya
2002-12-01 12:46
2002.12.12
Создание компонента:


1-36167
dumb
2002-12-04 01:09
2002.12.12
C++ 2 Delphi


1-36280
ЮРИЙ_К
2002-12-02 16:34
2002.12.12
Процесс выполнения выбивает базу 8-(((


1-36200
don_dampster
2002-12-04 11:42
2002.12.12
Как получить путь к моему приложению?


1-36106
Lord
2002-12-03 09:46
2002.12.12
Неполучается.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский