Форум: "Начинающим";
Текущий архив: 2006.08.13;
Скачать: [xml.tar.bz2];
ВнизСливание вспомогательных файлов Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.038 c