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

Вниз

Сливание вспомогательных файлов   Найти похожие ветки 

 
vain ©   (2006-07-23 15:53) [0]

При написании программы я столкнулся с такой проблемой.
Для работы моей программы необходимы некоторые файлы(картинки, .txt). Но не хранить же их в голом виде! В смысле просто покидать в папку, как у html"ек, тем более ползующемуся этой прогой нельзя видеть этих файликов. Подскажите, пожлуйста, как быть? Может их все можно как-то поместить в .res или .dll?


 
KilkennyCat ©   (2006-07-23 15:56) [1]

Можно.


 
Мефисто   (2006-07-23 16:27) [2]


> vain ©   (23.07.06 15:53) 


Поиск. В большенстве FAQ вопрос по работе с ресурсами изжеван уже не раз.


 
vain ©   (2006-07-23 16:56) [3]

Спасибо, поищу.


 
Anatoly Podgoretsky ©   (2006-07-23 17:08) [4]

Зачем же они тогда нужны, если пользователю не положено их видеть. Если насчет текстовых файлов я еще как то пойму, но зачем нужны картинки, которые нельзя видеть это выше моего понимания.


 
KilkennyCat ©   (2006-07-23 17:18) [5]

> [4] Anatoly Podgoretsky ©   (23.07.06 17:08)

а в них текст спрятан. Забыл это умное слово, криптографическое....


 
vain ©   (2006-07-23 17:20) [6]


> Зачем же они тогда нужны, если пользователю не положено
> их видеть. Если насчет текстовых файлов я еще как то пойму,
>  но зачем нужны картинки, которые нельзя видеть это выше
> моего понимания.
>

:-D Я имею в виду невозможность посмотреть картинки, которые использует моя прога, каким-нибудь viewer"ом, а не в работающей проге.


 
Мефисто   (2006-07-23 17:22) [7]


> Anatoly Podgoretsky ©   (23.07.06 17:08) [4]


Некоторые продвинутые юзеры, ресурсы лежащие в открытую любят поредактировать/удалить...


 
Мефисто   (2006-07-23 17:24) [8]


> vain ©   (23.07.06 17:20) [6]


А тогда редактором ресурсов все равно можно будет просмотреть и изменить :)


 
vain ©   (2006-07-23 17:40) [9]

Я нашёл статью на сайте про dll"ки, но там...Цитирую:"В DLL можно размещать не только функции, но и курсоры, рисунки, иконки, меню, текстовые строки. На этом мы останавливаться не будем." Вот ведь блин, а!
Ну так как мне их засунуть в dll"ку-то, а? Или хотя-бы в ресурс? (Хорошо, что есть на сайте раздел где задав неумный вопрос, чувствуешь себя хотя бы ламером, а не дебилом:))


 
KilkennyCat ©   (2006-07-23 17:46) [10]

Бездумно выдрал из кулибы...
ОбычныйТерминСписокопределенийАдресЦитатыФорматированныйконецформыначалоформыпри ступил к изучению этой замечательной среды разработчика; сейчас передо мной стоит задача распространения моей самой первой программы. Начиная с третьей версии, Delphi содержит модуль jpeg, позволяющий работать с этим форматом изображений, и у меня встала задача включить jpeg-графику в мой исполнимый файл для последующего использования в программе, но как это осуществить я пока не знаю.
Нет проблем! Выполните пять простых шагов, описанных ниже, и вы поймете все эту сложную, на первый взгляд, технологию.
Шаг первый:
Создайте файл сценария ресурса (*.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-файл строчку с другим индексом для каждого включаемого изображения.
Шаг пятый:
Вызовите процедуру, запустите программу и вуаля! Дело сделано


 
KilkennyCat ©   (2006-07-23 17:47) [11]

Ужасть... все форматирование улетело...


 
vain ©   (2006-07-23 18:03) [12]


> Ужасть... все форматирование улетело...

Ничего страшного я уже саму эту статью нашёл. Щас попробую...


 
KilkennyCat ©   (2006-07-23 18:06) [13]

Итак, нормально отвечаем. Ресурсы.

Создаем текстовый файл.
В нем пишем информацию о ресурсах в таком виде:

<идентификатор> <тип> <имя файла>
к примеру:
1 BITMAP "kartinka.bmp"
2 CURSOR "Курсор.кур"
3 ICON "c:\ikon.ico"

просто данные имеют тип RCDATA

строки сохраняются следующим видом:
STRINGTABLE
{
4, "Ля-ля"
5, "Тополя"
6, "Фигня"
7, "Херня"
8, "И т.д."
9, "И т.п."
}

Затем компилируем этот файл в ресурс:
В командной строке введите:
BRCC32 имя вышесделанного файла.rc

Получим файл.res

Поместим его в папку проекта.
Добавим директиву компилятора к исходному коду вашей программы.
Она должна располагаться непосредственно за директивой формы, как показано ниже:
{$R *.DFM}
{$R MyPic.RES}


 
KilkennyCat ©   (2006-07-23 18:13) [14]

Теперь выдираем. Как выдрать джпег (или, просто данные) у Вас уже есть статья. Тянем строки, бмп, иконки...

Битмап:

Bmp.Handle := LoadBitmap(HInstance,"BITMAP_1");
Где BITMAP_1 - идентификатор.

Строки:
var
 s : string;
 Buff : array[0..255] of char;
begin
 LoadString(hInstance, 1, Buff, 255);
 s := StrPas(Buff);

где 1 - идентификатор строки
Желательно обрабатывать результаты этих функций (Load...), дабы ошибки отследить.


 
KilkennyCat ©   (2006-07-23 18:17) [15]

курсоры аналогично:
Сурсор := LoadCursor(HInstance, "CURSOR_1");


 
KilkennyCat ©   (2006-07-23 18:18) [16]

иконки ненамного сложне... LoadIcon...

И вообще, ресурсы можно описывать и компилировать сразу в проекте


 
Anatoly Podgoretsky ©   (2006-07-23 18:33) [17]

vain ©   (23.07.06 17:40) [9]
Я нашёл статью на сайте про dll"ки, но там...Цитирую:"В DLL можно размещать не только функции, но и курсоры, рисунки, иконки, меню, текстовые строки.

И это не как не мешает их просмотру посторонним вьювером и выдиранию при необходимости.

Не на то силы тратишь, так и уйдут все силы на красоту, на прятанье, а на программу, как в большинстве подобных случаев и не останется.


 
vain ©   (2006-07-23 18:43) [18]


>
> Не на то силы тратишь, так и уйдут все силы на красоту,
> на прятанье, а на программу, как в большинстве подобных
> случаев и не останется.
>

Сам говоришь, "в большинстве подобных случаев"...
Ладно.
Вобщем я попробовал, но при компилляции выдаётся сообщение "Fatal error could not create interface with rw32core.dll". Я недавно поставил Delphi 2005. И мне очень кажется, что зря - Delphi 7 была... как сказать... качественнее, доработанней, что-ли, несмотря на то, что 2005 красивее. Так я к чему, может мне в Delphi 7 попробовать скомпиллировать?

> И вообще, ресурсы можно описывать и компилировать сразу
> в проекте
>

А это как?


 
KilkennyCat ©   (2006-07-23 19:01) [19]

> Я недавно поставил Delphi 2005


Ну а я 2006, и что?


> И вообще, ресурсы можно описывать и компилировать сразу
> > в проекте


Оччень просто: создаем файл myresurs.rc. Добавляем его в проект (кнопкой "папка с плюсом") . Все, теперь его можно легко открыть и редактировать прямо в Делфи. В главный модуль пишем {$R myresurs.res}, при компиляции проекта этот рез автоматом скомпилируется из рс


 
KilkennyCat ©   (2006-07-23 19:02) [20]

И кстати, оффтопом, установка 2005, 2006 или чего либо еще не обязывает сносить предыдущие шестерки, семерки...


 
Anatoly Podgoretsky ©   (2006-07-23 19:07) [21]

KilkennyCat ©   (23.07.06 19:01) [19]
В главный модуль пишем {$R myresurs.res}, при компиляции проекта этот рез автоматом скомпилируется из рс

Это лишнее и легко напутать, по крайней мере это сбивает работу проекта, синтаксис там совсем другой. В общем все что нужно, так это добавить в проект rc файл, остальное сделает Дельфи. Доступно это начиная с Д5


 
vain ©   (2006-07-23 19:20) [22]


> KilkennyCat ©   (23.07.06 19:02) [20]
>
> И кстати, оффтопом, установка 2005, 2006 или чего либо еще
> не обязывает сносить предыдущие шестерки, семерки...

Это я знаю, просто место на харде кончилось.
Спасибо за совет (точнее советы).


 
KilkennyCat ©   (2006-07-23 19:20) [23]

> [21] Anatoly Podgoretsky ©   (23.07.06 19:07)

Спасибо. Да, действительно, можно напутать. давно уже не использую ресурсы, забываю.



Страницы: 1 вся ветка

Текущий архив: 2006.08.13;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.069 c
15-1153306535
Prohodil Mimo
2006-07-19 14:55
2006.08.13
Есть ли Skype-плагин к Миранде?


15-1152813902
Dok_3D
2006-07-13 22:05
2006.08.13
Препараты для улучшения работы мозга


15-1153094770
Ketmar
2006-07-17 04:06
2006.08.13
никому не нужен удалёный программист?


6-1143428539
Denisac
2006-03-27 07:02
2006.08.13
Кодировка в сообщении


2-1153732005
vain
2006-07-24 13:06
2006.08.13
Картинки в dll