![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
deniska |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 398 Регистрация: 1.7.2005 Где: Троицк Репутация: нет Всего: 0 |
пытаюсь в текстовый файл писАть тип ресурса и имена ресурсов данного типа. в итоге получается не полный список. почемуто имена ресурсов RT_BITMAP перечисляются вроде все(на глаз), а вот по типу RT_STRING перечисляется полная чушь, хотя их должно быть около 200 штук а в итоге НИ ОДНОГО верного имени в файл не попадает. если вручную написать LoadString с определенным идентификатором, то строка считывается нормально, то есть она там реально есть. Не работает именно перечисление строк. У String table в ресурсах язык стоит "Русский". Смущает то что идентификаторы строк и картинок BMP в большинстве своем пересекаются (так сгенерировал студийный wizard) в dll-ке. Проект загружаемой Resource dll имеется. отчего такой косяк с перечислением строк??? Это сообщение отредактировал(а) deniska - 9.9.2008, 09:34 |
||||
|
|||||
deniska |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 398 Регистрация: 1.7.2005 Где: Троицк Репутация: нет Всего: 0 |
ну что? есть идеи какие? или можно идти стреляться
![]() |
|||
|
||||
HappyLife |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 17.5.2006 Репутация: нет Всего: 8 |
А что это?
|
|||
|
||||
deniska |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 398 Регистрация: 1.7.2005 Где: Троицк Репутация: нет Всего: 0 |
проверяем в каком виде имя(тип) пришло: строкой или числовым идентификатором то же что макрос IS_INTRESOURCE
|
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
каждый ресурс STRINGTABLE (RT_STRING) может включать вплоть до 16 строк, идентификатор любой строки шифруется так:
ID/16+1 - это идентификатор ресурса RT_STRING сам ресурс - последовательный набор из 16-ти позиций каждая содержит 2 поля: 1. длина строки (2 байта) 2. сама строка в размере первого поля (строка в юникоде и без терминатора!) индекс номера строки берется так же из идентификатора: ID%16 поэтому число ресурсов RT_STRING не обязательно должно быть равным числу строк, стандартно, делим число строк на 16 + остаток - получим реальное число русурсов RT_STRING -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
deniska |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 398 Регистрация: 1.7.2005 Где: Троицк Репутация: нет Всего: 0 |
GremlinProg, не втыкаю.
вот какие ID получаются при моем считывании:
реально я знаю что ид. строк у меня лежат в диапазоне 1000 - 1150 (те которые я туда вносил). вот чего то как то одно из другого не получается... |
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
ну вот
63 => 63 * 16 = 1008 73 => 73 * 16 = 1168 т.е. ресурсы с 63 по 73 полностью покрывают все твои строки остальные - левые, разбирай код, индексы на три халфбайта ) или напутал чего, или это недекодированные индексы строк -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
GremlinProg |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
в принципе, это мугут быть так же ресурсы, но скомпилировванные по-умолчанию (самой средой или в частном порядке),
посмотри, что там внутри вот загрузчик строк:
для STRINGTABLE - по аналогии:
Это сообщение отредактировал(а) GremlinProg - 9.9.2008, 15:51 -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
||||
|
|||||
deniska |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 398 Регистрация: 1.7.2005 Где: Троицк Репутация: нет Всего: 0 |
спс огромный. завтра буду пробовать. даже не знал про такую организацию строк...
Это сообщение отредактировал(а) deniska - 10.9.2008, 09:55 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |