Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
11-1131116067
AMB
2005-11-04 17:54
2006.08.13
Неработает запрос на обновление c параметрами в KOLIB


2-1153569490
Ivolg
2006-07-22 15:58
2006.08.13
Размер изображния


3-1149885157
Андрей11111
2006-06-10 00:32
2006.08.13
Поиск как в на платформе F1


6-1143492849
w666w
2006-03-28 00:54
2006.08.13
INDY10 гонит или я болею?


1-1151600613
Franzy
2006-06-29 21:03
2006.08.13
передача события паренту - как?





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