Ресурсы. Зачем они нужны (исходники)Источник: Русские документы Alar
В этой статье я хочу рассказать основы работы с ресурсами. Как всегда сначала я поясню для чего же нам нужна эти ресурсы:
Для начала откроем программу редактора ресурсов (стандартная в составе Delphi это Image Editor). Я буду рассматривать именно этот редактор. Создадим новый ресурс File>New:>Resource File Появится окно, в нём кликните правой кнопкой мыши и в меню выбрать New>Bitmap(картинка) или Icon(иконка) или Cursor(курсор) В этой статье я рассмотрю Картинки в ресурсе. В начале после нажатия на New>Bitmap появиться диалог в котором мы выбираем ширину, высоту и количество цветов в картинке. Имя картинки нужно переименовать заглавными буквами ЭТО ВАЖНО. Теперь сохраним ресурс (н.р. Resource.res) в папку с проектом. Перейдем к созданию второго ресурса с программой внутри и сразу напишем программу для доставания exe из ресурса.
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; |