Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с получением строки из ресурсов 
V
    Опции темы
Simplemortal
  Дата 4.7.2007, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 2.7.2007

Репутация: нет
Всего: нет



Здравствуйте!
У меня проблема следующего характера.
Я в редакторе ресурсов добавил строковый ресурс.
Теперь мне необходимо прочитать от туда несколько строк.
Делаю так:
Код

ResourceManager ^rm = gcnew ResourceManager("Tester.FTesting", this->GetType()->Assembly);
LComment1->Text=rm->GetString("IDS_STRING_3_4");


LComment1 - это Label
IDS_STRING_3_4 - идентификатор строки.

Почему-то
Код

rm->GetString("IDS_STRING_3_4")

 возвращает пустую строку.
PM MAIL   Вверх
stab
Дата 4.7.2007, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 7
Всего: 48



проект вижу на C++\CLI. может не в managed ресурсы добавил строку?


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Simplemortal
  Дата 4.7.2007, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 2.7.2007

Репутация: нет
Всего: нет



Спасибо за ответ stab!
Дело в том, что я всегда работал на Borland С++ Builder и немного на MFC.
Я более или менее разобрался с Windows Forms, но про managed ресурсы я пока не слышал, поэтому наверное вы правы, что я строки расположил не в managed. 
Я просто в окне Resource View вызвал окно добавления ресурсов и выбрал String Table.
Буду очень признателен, если вы просветите меня по поводу использования managed ресурсов.

С уважением, Simplemortal.

PS: мне ещё нужно будет загружать BMP и JPG рисунки. Понятие управляемых ресурсов актуально и для них?
PM MAIL   Вверх
stab
Дата 5.7.2007, 06:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 7
Всего: 48



1. Project -> Add New Item -> Visual C++ -> Resource -> Assembly Resource File (*.resx), назовём этот файл ManagedResources.
2. Project -> Properties -> Linker -> Embed Managed Resource File = $(InputDir)$(IntDir)\$(RootNamespace).ManagedResources.resources
3. добавим строковой ресурс, имя: "TestString".
4. используем:

Код

// CppManagedResources.cpp : main project file.

#include "stdafx.h"

using namespace System;
using namespace System::Resources;
using namespace System::Reflection;

int main(array<System::String ^> ^args)
{
    ResourceManager ^rm = gcnew ResourceManager("CppManagedResources.ManagedResources", Assembly::GetCallingAssembly());
    Console::WriteLine(rm->GetString("TestString"));
    Console::ReadLine();
    return 0;
}


Цитата(Simplemortal @  5.7.2007,  01:24 Найти цитируемый пост)
PS: мне ещё нужно будет загружать BMP и JPG рисунки. Понятие управляемых ресурсов актуально и для них? 

да, актуально, получать их надо через ResourceManager->GetObject.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Simplemortal
Дата 5.7.2007, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 2.7.2007

Репутация: нет
Всего: нет



Спасибо, в целом стало понятно, но есть маленькая проблемка.
Цитата

Project -> Properties -> Linker -> Embed Managed Resource File = $(InputDir)$(IntDir)\$(RootNamespace).ManagedResources.resources

Как только я это делаю, у меня компилято начинает выдавать следующую ошибку:
Код

LINK : fatal error LNK1316: duplicate managed resource name 'console.ManagedResources.resources'

PM MAIL   Вверх
stab
Дата 5.7.2007, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 7
Всего: 48



хм.. может они (ресурсы) у тебя и без этой настройки цепляются к файлу. попробуй оставить Project -> Properties -> Linker -> Embed Managed Resource File пустым.

Добавлено через 4 минуты и 10 секунд
.. кстати, вместо GetCallingAssembly наверное лучше использовать GetExecutingAssembly.


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Simplemortal
Дата 5.7.2007, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 2.7.2007

Репутация: нет
Всего: нет



Странно, я до прочтения вашего последнего сообщения пробовал оставлять Project -> Properties -> Linker -> Embed Managed Resource File пустым, тогда ошибки не было, но и ресурс не находился.
Сейчас снова создал новый проект, в нём также ошибка LINK'ера, но если эту строку оставить пустую, то уже работает!
Благодарю за помощь, stab!!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0437 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.