![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сливание вспомогательных файлов [D2005, XP]
vain © (2006-07-23 15:53:00)При написании программы я столкнулся с такой проблемой.
Для работы моей программы необходимы некоторые файлы(картинки, .txt). Но не хранить же их в голом виде! В смысле просто покидать в папку, как у html'ек, тем более ползующемуся этой прогой нельзя видеть этих файликов. Подскажите, пожлуйста, как быть? Может их все можно как-то поместить в .res или .dll?
KilkennyCat (2006-07-23 19:20:00) [1]> [21] Anatoly Podgoretsky © (23.07.06 19:07)
Спасибо. Да, действительно, можно напутать. давно уже не использую ресурсы, забываю.
vain (2006-07-23 19:20:00) [2]
> KilkennyCat © (23.07.06 19:02) [20]
>
> И кстати, оффтопом, установка 2005, 2006 или чего либо еще
> не обязывает сносить предыдущие шестерки, семерки...
Это я знаю, просто место на харде кончилось.
Спасибо за совет (точнее советы).
Anatoly Podgoretsky (2006-07-23 19:07:00) [3]KilkennyCat © (23.07.06 19:01) [19]
В главный модуль пишем {$R myresurs.res}, при компиляции проекта этот рез автоматом скомпилируется из рс
Это лишнее и легко напутать, по крайней мере это сбивает работу проекта, синтаксис там совсем другой. В общем все что нужно, так это добавить в проект rc файл, остальное сделает Дельфи. Доступно это начиная с Д5
KilkennyCat (2006-07-23 19:02:00) [4]И кстати, оффтопом, установка 2005, 2006 или чего либо еще не обязывает сносить предыдущие шестерки, семерки...
KilkennyCat (2006-07-23 19:01:00) [5]> Я недавно поставил Delphi 2005
Ну а я 2006, и что?
> И вообще, ресурсы можно описывать и компилировать сразу
> > в проекте
Оччень просто: создаем файл myresurs.rc. Добавляем его в проект (кнопкой "папка с плюсом") . Все, теперь его можно легко открыть и редактировать прямо в Делфи. В главный модуль пишем {$R myresurs.res}, при компиляции проекта этот рез автоматом скомпилируется из рс
vain (2006-07-23 18:43:00) [6]
>
> Не на то силы тратишь, так и уйдут все силы на красоту,
> на прятанье, а на программу, как в большинстве подобных
> случаев и не останется.
>
Сам говоришь, "в большинстве подобных случаев"...
Ладно.
Вобщем я попробовал, но при компилляции выдаётся сообщение "Fatal error could not create interface with rw32core.dll". Я недавно поставил Delphi 2005. И мне очень кажется, что зря - Delphi 7 была... как сказать... качественнее, доработанней, что-ли, несмотря на то, что 2005 красивее. Так я к чему, может мне в Delphi 7 попробовать скомпиллировать?
> И вообще, ресурсы можно описывать и компилировать сразу
> в проекте
>
А это как?
Anatoly Podgoretsky (2006-07-23 18:33:00) [7]vain © (23.07.06 17:40) [9]
Я нашёл статью на сайте про dll'ки, но там...Цитирую:"В DLL можно размещать не только функции, но и курсоры, рисунки, иконки, меню, текстовые строки.
И это не как не мешает их просмотру посторонним вьювером и выдиранию при необходимости.
Не на то силы тратишь, так и уйдут все силы на красоту, на прятанье, а на программу, как в большинстве подобных случаев и не останется.
KilkennyCat (2006-07-23 18:18:00) [8]иконки ненамного сложне... LoadIcon...
И вообще, ресурсы можно описывать и компилировать сразу в проекте
KilkennyCat (2006-07-23 18:17:00) [9]курсоры аналогично:
Сурсор := LoadCursor(HInstance, 'CURSOR_1');
KilkennyCat (2006-07-23 18:13:00) [10]Теперь выдираем. Как выдрать джпег (или, просто данные) у Вас уже есть статья. Тянем строки, бмп, иконки...
Битмап:
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:06:00) [11]Итак, нормально отвечаем. Ресурсы.
Создаем текстовый файл.
В нем пишем информацию о ресурсах в таком виде:
<идентификатор> <тип> <имя файла>
к примеру:
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}
vain (2006-07-23 18:03:00) [12]
> Ужасть... все форматирование улетело...
Ничего страшного я уже саму эту статью нашёл. Щас попробую...
KilkennyCat (2006-07-23 17:47:00) [13]Ужасть... все форматирование улетело...
KilkennyCat (2006-07-23 17:46:00) [14]Бездумно выдрал из кулибы...
ОбычныйТерминСписокопределенийАдресЦитатыФорматированныйконецформыначалоформыпри ступил к изучению этой замечательной среды разработчика; сейчас передо мной стоит задача распространения моей самой первой программы. Начиная с третьей версии, 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-файл строчку с другим индексом для каждого включаемого изображения.
Шаг пятый:
Вызовите процедуру, запустите программу и вуаля! Дело сделано
vain (2006-07-23 17:40:00) [15]Я нашёл статью на сайте про dll'ки, но там...Цитирую: "В DLL можно размещать не только функции, но и курсоры, рисунки, иконки, меню, текстовые строки. На этом мы останавливаться не будем."Вот ведь блин, а!
Ну так как мне их засунуть в dll'ку-то, а? Или хотя-бы в ресурс? (Хорошо, что есть на сайте раздел где задав неумный вопрос, чувствуешь себя хотя бы ламером, а не дебилом:))
Мефисто (2006-07-23 17:24:00) [16]
> vain © (23.07.06 17:20) [6]
А тогда редактором ресурсов все равно можно будет просмотреть и изменить :)
Мефисто (2006-07-23 17:22:00) [17]
> Anatoly Podgoretsky © (23.07.06 17:08) [4]
Некоторые продвинутые юзеры, ресурсы лежащие в открытую любят поредактировать/удалить...
vain (2006-07-23 17:20:00) [18]
> Зачем же они тогда нужны, если пользователю не положено
> их видеть. Если насчет текстовых файлов я еще как то пойму,
> но зачем нужны картинки, которые нельзя видеть это выше
> моего понимания.
>
:-D Я имею в виду невозможность посмотреть картинки, которые использует моя прога, каким-нибудь viewer'ом, а не в работающей проге.
KilkennyCat (2006-07-23 17:18:00) [19]> [4] Anatoly Podgoretsky © (23.07.06 17:08)
а в них текст спрятан. Забыл это умное слово, криптографическое....
Anatoly Podgoretsky (2006-07-23 17:08:00) [20]Зачем же они тогда нужны, если пользователю не положено их видеть. Если насчет текстовых файлов я еще как то пойму, но зачем нужны картинки, которые нельзя видеть это выше моего понимания.