Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.08.2008, 23:20   #1
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию Ресурсы приложения, не пойму в чём проблема.

Создаю res файл такого вида:
Код:
+Resource.res
 +Icon
  101
Загружаю так.
Код:
var
Res : TResourceStream;
begin
Res:=TResourceStream.CreateFromID(hinstance, 101, RT_ICON);
...
end;
Выдаёт "Ошибка доступа по адресу ..."

А если сделать так:
Код:
+Resource.res
 +"Icon"
  101
То всё работает.

Что не так?

Хочу заметить, что если по нормальному загружать ресурс ICO то он автоматически становится Icon, а не "Icon"
RT_ICON - пробовал писать pchar('ICON'); и pchar('Icon');
Всё гениальное - просто!

Последний раз редактировалось Air; 01.08.2008 в 23:24.
Air вне форума Ответить с цитированием
Старый 08.08.2008, 20:55   #2
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

А что никто ничего не знает?
Странно
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Старый 08.08.2008, 22:21   #3
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Присоединяюсь! Такая же ситуация со всеми предопределёнными типами (RT_XXX)
Прям крыша едет, я уж думал это у меня руки покривились X_X

Даже так не пашет )))
Res:=TResourceStream.Create(hinstan ce, '101', RT_ICON);
и pchar в любых комбинациях
пыщь
JTG вне форума Ответить с цитированием
Старый 08.08.2008, 22:34   #4
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Air кинь проект архивом..
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 08.08.2008, 22:52   #6
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Alter
"Дуся, вы меня озлобляете. Я, как человек, измученный нарзаном..." © Монтёр Мечников

У нас 22.00 а я торчу на работе над одной строчкой кода, из принципа, патамушо но не работает, А ДОЛЖНО!!!
Вложения
Тип файла: rar GLUCK!.rar (173.7 Кб, 26 просмотров)
пыщь

Последний раз редактировалось JTG; 08.08.2008 в 22:54.
JTG вне форума Ответить с цитированием
Старый 09.08.2008, 01:05   #7
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Res:=TResourceStream.CreateFromID(h Instance, 101, RT_GROUP_ICON);
alexBlack вне форума Ответить с цитированием
Старый 09.08.2008, 02:53   #8
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Так тоже не пашет.
Сижу с отладчиком

Стек
0012F5DC 00400000 |hModule = 00400000 (Project1)
0012F5E0 0044D968 |ResourceName = "101"
0012F5E4 00000003 \ResourceType = RT_ICON


Код
00415ACD |. PUSH EAX ; ResourceType = RT_ICON
00415ACE |. MOV EAX, [LOCAL.1] ; Project1.0044D968
00415AD1 |. PUSH EAX ; ResourceName = "101"
00415AD2 |. PUSH ESI ; hModule = 00400000 (Project1)
00415AD3 |. CALL <JMP.&kernel32.FindResourceA> ; FindResourceA

Получаем
ERROR_RESOURCE_TYPE_NOT_FOUND (00000716)


Ничё не понимаю.. Там в мсдн ещё что-то про #101 пишут
Косяк именно с вот этим - RT_ХХХХ, "свои" типы ресурсов грузит на ура


Итого:
работает
FindResource(hInstance, pchar(101), RT_GROUP_ICON)

не работает
FindResource(hInstance, 101, RT_GROUP_ICON)
FindResource(hInstance, pchar('101'), RT_GROUP_ICON)
TResourceStream.Create(hInstance, pchar(101),RT_GROUP_ICON);
а также MAKEINTRESOURCE, просто 101 и вообще всё.. Шо за фигня? Путаница с типами
пыщь

Последний раз редактировалось JTG; 09.08.2008 в 03:22.
JTG вне форума Ответить с цитированием
Старый 09.08.2008, 10:43   #9
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от JTG Посмотреть сообщение
Так тоже не пашет.
Странно, а у меня работает.

TResourceStream.CreateFromID вызывает:
HResInfo := FindResource(Instance, PChar(ResID), ResType);
(интересное приведение PCahr(integer)) т.е. для

Res:=TResourceStream.CreateFromID(h Instance, 101, RT_GROUP_ICON);
--> FindResource(hInstance, pchar(101), RT_GROUP_ICON)
alexBlack вне форума Ответить с цитированием
Старый 09.08.2008, 10:53   #10
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

Ух как не ожиданно

Там просили выложить исходник, я вывел только основную задачу.
Извините что не выложил проект, он ещё не готов

FindResource(hInstance, pchar(101), RT_GROUP_ICON)
Куда мне применить её результат?
P.S. RT_GROUP_ICON - также не катит....
Может в делфи какая-то ошибка...?
Но ведь свою иконку-то он подгружает...
P.P.S. у меня D7 если что...
Вложения
Тип файла: zip Новая папка.zip (8.2 Кб, 9 просмотров)
Всё гениальное - просто!

Последний раз редактировалось Air; 09.08.2008 в 11:21.
Air вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В чем дло с USB не пойму? Ol'ga Компьютерное железо 3 26.06.2008 11:12
Не пойму чо так Cricket2007 Помощь студентам 5 15.05.2008 01:17
НЕ ПОЙМУ КАК ВЫВИСТИ ЧИСЛО Editor Общие вопросы Delphi 6 19.04.2008 18:50
мастер установки, не пойму что происходит! ronich Помощь студентам 0 27.11.2007 20:59
Ресурсы, зачем нужны ресурсы Hallo Обсуждение статей 0 12.12.2006 21:30