Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11634
Последний выпуск: 19.06.2015

Ресурсы. Зачем они нужны

Автор: Alar

Всем Hi. В этой статье я хочу рассказать основы работы с ресурсами.

Как всегда сначала я поясню для чего же нам нужна эти ресурсы:

  • Например для программ инсталляции (не лучший пример но), т.е. в программу можно запихать ещё пару программ.
  • Для хранения большого числа картинок.
  • Для хранения своих курсоров.

Для начала откроем программу редактора ресурсов (стандартная в составе Delphi это Image Editor). Я буду рассматривать именно этот редактор. Создадим новый ресурс File>New:>Resource File

Появится окно, в нём кликните правой кнопкой мыши и в меню выбрать New>Bitmap(картинка) или Icon(иконка) или Cursor(курсор)

В этой статье я рассмотрю Картинки в ресурсе. В начале после нажатия на New>Bitmap появиться диалог в котором мы выбираем ширину, высоту и количество цветов в картинке. Имя картинки нужно переименовать заглавными буквами ЭТО ВАЖНО. Теперь сохраним ресурс (н.р. Resource.res) в папку с проектом.

Перейдем к созданию второго ресурса с программой внутри и сразу напишем программу для доставания exe из ресурса.

  • Пишем в блокноте RC-файл, куда прописываем все нужные нам программы, например: Demo EXEFILE C:\Demo.exe
  • Компилируем его в ресурс при помощи Brcc32.exe (Brcc32.exe этот файл там, где Delphi лежит). Получаем RES-файл.
  • Далее в тексте нашей программы:
Implementation

{(знак доллара)R *.DFM}
{(знак доллара)R test.res} //Это наш RES-файл
{(знак доллара)R Resource.res} //Это ресурс для второго примера с картинками

procedure ExtractRes(ResType, ResName, ResNewName : String);
var
Res : TResourceStream;
Begin
// ResType - тип ресурса в нашем случае это программа с типом EXEFILE
// ResName - имя ресурса
// ResNewName - соответственно имя нового файла
Res:=TResourceStream.Create(Hinstance, Resname, Pchar(ResType));
Res.SavetoFile(ResNewName);
Res.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
// Записывает в текущую папку Demo.exe
ExtractRes('EXEFILE', 'Demo', 'Demo.exe');
end;

Первый пример мы сделали давайте рассмотрим второй. Работа с картинками. Ресурс мы сделали и подключили теперь пишем процедуру для облегчения вывода изображения

procedure Bmp(var ImageNumber:TImage;ImageName:String);
var //Всякие переменные
MyBitmap:TBitmap;
MyIconsSt:String;
Begin
// ImageNumber - это имя Image куда будет грузиться картинка
// ImageName - собственно имя самой картинки
MyBitmap:= TBitmap.Create;
MyIconsSt:=ImageName;
MyBitmap.Handle:=LoadBitmap(hInstance,PChar(MyIconsSt));
ImageNumber.Picture.Bitmap:=MyBitmap;
MyBitmap.Free;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Bmp(Image1,'BITMAP1?);
end;

Исходник

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
32K
12 сентября 2007 года
Licantrop
1 / / 12.09.2007
+1 / -0
Мне нравитсяМне не нравится
28 февраля 2008, 11:02:49
Слишко коротко, не раскрыта суть формата res файлов.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог