![]() |
|
|
![]()
|
|
| InfMag |
|
||||||
|
… ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: 1 Всего: 4 |
В общем у меня возникла проблема с TResourceStream, причём возникала она не у меня одного, листал по поиску, проблемы свои люди всячески решали, но ни одно из решений не решило мою. В общем у меня есть JPEG в ресурсах. Сразу утверждаю, что с ресурсом всё в порядке, ибо следующий код прекрасно выводит мне размер ресурса:
А вот с TResourceStream я как только не игрался, вот различные варианты:
В общем вариантов много разных было, но все, заразы выдают одно и тоже: RESOURCE MYJP NOT FOUND. В чём логика? Вот строка из RC файлика проекта:
Добавлено через 3 минуты и 7 секунд Прошу прощения конечно, но хотелось бы для собственного понимания маленький попутный вопрос: L"RT_RCDATA" - L тут - это превращалка в wchar? Я просто в примере решения нашёл, но хочу понимать в чём суть. |
||||||
|
|||||||
| Dem_max |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 14 Всего: 39 |
а так не пробовал ?
или
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
||||
|
|||||
| InfMag |
|
|||
|
… ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: 1 Всего: 4 |
Dem_max, первый способ не помог. А MAKEINTRESOURCE не подходит по той причине, что я хочу написать функцию, чтобы имя ресурса динамически подставлять.
Вопрос: на что ссылается отдефайненый 2000? Оффтоп: что делает приставка L? Я всё-таки сделал для себя открытие! MAKEINTRESOURCE(MYJP) - ругается на [BCC32 Error] opengl.cpp(474): E2451 Undefined symbol 'MYJP' - странно, но чуть раньше я ссылался таким образом, и всё работало, а сейчас что-то слетело и ни один ресурс теперь не находится. define-ов писать не надо было, они уже автоматом в проекте видимо где-то дефайнятся. Может тут где-то собака зарыта? Что ссылки слетели на ресурсы? Я использую C++Builder 2010. Добавлено через 3 минуты и 36 секунд Таки получилось найти в справке об L - это действительно как я предполагал, WideChar, похоже идентично (System::WideChar*) или String(...).t_ctr() Добавлено через 11 минут и 21 секунду Добавлю, что следующий код всё-также прекрасно находит ресурс:
Может как-то с него можно Stream тип получить? И ну его нафиг этот привередливый TResourceStream? |
|||
|
||||
| InfMag |
|
||||
|
… ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: 1 Всего: 4 |
Я даже вот так попробовал:
Файл 1.jpg пуст, что я делаю не так? :'( Добавлено через 5 минут и 9 секунд Ура! Я это сделал!
Но вопрос остаётся открытым, я хочу окончательно разобраться в TResourceStream . Может это какой-то особенный глюк в 10-ой RAD студии? |
||||
|
|||||
| Dem_max |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 14 Всего: 39 |
кароче нужно делать так
в свойствах проекта в С++ Compiler в Directories and Conditionals указать UNICODE
если же проект не юникодный то просто пишем так
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
||||
|
|||||
| InfMag |
|
||||||
|
… ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: 1 Всего: 4 |
Dem_max, по идее в RAD2010 все проекты теперь юникодом идут.
Второй пример ту же ошибку выдаёт. Я хочу обратить внимание на структуру, которая в ошибке описана: unsigned int,const wchar_t *,char * RT_RCDATA - эта константа (или как это назвать не по дилетантски?) - она туда упорно не влезает, именно по тому я и писал L"RT_RCData".
А вот этот код всё также выдаёт, что resource not found. Тут я вообще себе целый класс составил на базе Find-Load-Lock-Resource + TMemoryStream: http://unclechu.blog.com/2011/01/02/%D0%9A...tresource-v0-1/ |
||||||
|
|||||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 26 Всего: 459 |
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| InfMag |
|
|||
|
… ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: 1 Всего: 4 |
Alexeis, [BCC32 Error] opengl.cpp(499): E2285 Could not find a match for 'TResourceStream::TResourceStream(unsigned int,const wchar_t *,char *)'
Добавлено через 1 минуту и 14 секунд Интересное кино, не правда ли? Причём я по этому TRS листал уже, там тоже пишут L"RT_RCDATA" - вместо RT_RCDATA. Добавлено через 13 минут и 31 секунду Вот например можно взглянуть как тут решалась данная проблема, мне не помогло: http://forum.vingrad.ru/topic-260478.html http://forum.vingrad.ru/topic-285798.html - вот тут подгружали иконки, мырулили спец. типом ресурса. Это только на винграде, где что только не писали, у меня так и не заработало.
Вот собрал все мои прагмы и инклюды. В билдере ресурсы подключаются в проект без прагм. По первой ссылке проблема исключается, у меня тут этого нет. Уже похоже становится на мистицизм. И колдования с бубном. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 26 Всего: 459 |
InfMag, где-то неправильно объявлена константа RT_RCDATA . Вероятно она определена как TCHAR* у меня в настройках стоит map TCHAR to wchar_t поэтому находит правильно. По умолчанию в проекте стоит map TCHAR to char
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 26 Всего: 459 |
Не объявлен UNICODE -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| InfMag |
|
|||
|
… ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: 1 Всего: 4 |
Alexeis, но ведь, если взглянуть по приведённой мною ссылке (где Вы вроде даже участвовали), то в завершении решилось там всё через L"RT_RCDATA", а моё:
Добавлено через 7 минут и 39 секунд Alexeis, я всё же не совсем понял, где не объявлен уникод? И где map проставляется? Это сообщение отредактировал(а) InfMag - 2.1.2011, 20:29 |
|||
|
||||
| Dem_max |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 14 Всего: 39 |
итак обобщим что нужно сделать в Directories and Conditionals (в свойствах проекта) добавить UNICODE; и выставить maps to в wchar_t UNICODE необходим чтоб сработало это
и дальше в коде уже писать нормально
Это сообщение отредактировал(а) Dem_max - 3.1.2011, 07:09 -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
||||||
|
|||||||
| InfMag |
|
||||
|
… ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: 1 Всего: 4 |
Dem_max, извиняюсь конечно, но так и не понял где там нужно добавлять UNICODE, но зато переставив параметр в D&C _TCHAR map to с char на wchar_t следующий код прекрасно заработал по назначению:
Всем спасибо и плюс за помощь! Так у меня теперь вопрос: на что ещё повлияет эта смена map-а? Что-то может рухнуть? Я конечно извиняюсь за неясное понимание глубин языка, я только учусь. Добавлено через 4 минуты и 2 секунды О вуаля! Неужели меня этим осенило! Таки до меня дошло и я сделал всё без лишних изменений в свойствах проекта! Взгляните:
И всё! TResourceStream побеждён! Что только не пробовал, а до этого не додумался! |
||||
|
|||||
| Dem_max |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 14 Всего: 39 |
ты так и не понял ничего .......
скажи чем сей код
отличается от этого ?
и ты пришел к ничему ненужному (System::WideChar*)RT_RCDATA -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
||||
|
|||||
| InfMag |
|
|||
|
… ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: 1 Всего: 4 |
Dem_max, ну если брать от буквального, то если в настройках проекта не сменить D&C _TCHAR map to с char на wchar_t, то первый пример будет выдавать ошибку, а второй нет.
А пришёл я по-моему как-раз таки к нужному, поскольку хочу написать класс, который не будет требовать для своей работы ни изменения себя, ни изменений в настройках проекта. Где я ошибся? Я просто уточняю тип данных. И не хочу вносить доп. настройки к проекту, если это требуется для единичного места, и которые возможно побочно скажутся в каком-нибудь другом месте к тому же. P.S. Ну и ещё (я думаю тут это не в счёт), но в первом примере сохранение в файл x.jpg, а во-втором в x1.jpg Добавлено через 10 минут и 7 секунд А вообще тип wchar_t, сколько я могу знать предназначен хранить символы юникода. Это сообщение отредактировал(а) InfMag - 4.1.2011, 21:54 |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |