Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Использование встроеных ресурсов [D7, WinXP]


Mr.Devil ©   (2007-01-18 09:48:00) 

Пытаюсь извлечь из своего приложения, например, иконку ехе-файла, возникает ошибка "EResNotFound". Что у меня не так? Ресурс 'MAINICON' точно есть.

procedure TForm1.Button1Click(Sender: TObject);
var icon:TbitMap ;
begin
 icon:=TBitMAp.Create;
 icon.LoadFromResourceName(HInstance,'MAINICON');
 form1.Canvas.Draw(0,0,icon);
 icon.Free;
end;


Mr.Devil   (2007-01-18 11:28:00) [1]

Хммм... вставил твой код, работает.. тока иконка отображается не та, что в проводнике видна, а как на досовских ехе-шниках. Но суть я понял.

И я нашел ошибку :))))
У тебя "(hInstance, 1, RT_ICON)"
А у меня "(HInstance, 1, 'RT_ICON')"

Фсем спасибо! :)


Сергей М.   (2007-01-18 11:10:00) [2]


> Mr.Devil ©   (18.01.07 11:04) [6]


> Тоже не работает


У меня все работает.


Mr.Devil   (2007-01-18 11:04:00) [3]


> rs := TResourceStream.CreateFromId(hInstance, 1, RT_ICON);

Тоже не работает :( Пишет "Ошибка чтения по адресу 00000001"

Попробовал так:
procedure TForm1.Button1Click(Sender: TObject);
var R:TResourceStream;
   ResType: PChar;
begin
 ResType:='RT_ICON';
 R:=TResourceStream.CreateFromID(HInstance,1,ResType);
 R.Free;
end;


Сергей М.   (2007-01-18 10:42:00) [4]


> Mr.Devil ©   (18.01.07 10:16) [3]


Ресурс с именем 'MAINICON' имеет тип RT_GROUP_ICON, а не RT_ICON.

Интересующая тебя иконка имеет ID=1, грузи ее так:

procedure TForm1.Button1Click(Sender: TObject);
var
 rs: TResourceStream;
 icon: TIcon;
begin
icon:= TIcon.Create;
rs := TResourceStream.CreateFromId(hInstance, 1, RT_ICON);
icon.LoadFromStream(rs);
self.Canvas.Draw(0,0,icon);
icon.Free;
rs.Free;
end;


MBo   (2007-01-18 10:23:00) [5]

метод TBitmap.LoadFromResourceName ищет ресурс с типом RT_BITMAP и именем 'MAINICON', которого, естественно, нет


Mr.Devil   (2007-01-18 10:16:00) [6]

Ошибка возникает здесь
icon.LoadFromResourceName(HInstance,'MAINICON');
К тому же с битмапом та же фигня получается.


MBo   (2007-01-18 10:08:00) [7]

MAINICON - иконка, а не битмап


Mr.Devil   (2007-01-18 09:55:00) [8]

Вот как [url= http://delphimaster.ru/cgi-bin/faq.pl?look=1&id=988622425&n=19]тут[/url]написано тоже не работает..


Наверх

Титульная страница Поиск, карта сайта Написать письмо