Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 26.07.2017
Сообщений: 59

STRINGTABLE and #define,#ifdef

27.02.2019, 12:10. Показов 1107. Ответов 1

Студворк — интернет-сервис помощи студентам
Всем Здравия!

В Visual Studio строки стоит хранить в ресурсах, а точнее в String Table.
У меня есть класс, который придется постоянно переносить.
В этом классе используются строки, которые мы грузим из String Table.
Примерно так:
C++
1
2
3
4
{
CString str;
str.LoadString(ERROR);
}
Есть необходимость, что бы при переносе, если нет определения IDS_ERROR в String Table, то выводилась конкретная строка.
Хотелось бы, что бы это было в начале файла, как #define, чтобы было легко взять и скопировать в String Table.

Попробовал что-то типа:
C++
1
2
3
4
5
6
7
8
9
10
#ifndef IDS_ERROR
#define ERROR "Ошибка"
#elseif
#define ERROR IDS_ERROR
#endif
 
{
CString str;
str.LoadString(ERROR);
}
Но тут две проблемы:
1) #ifndef IDS_ERROR не смотрит на String Table, что есть там строка, что нет все едино.
2) В случае если строка определена в String Table, то в коде должно быть str.LoadString(ERROR), а если нет то str = ERROR.

Но как это сделать, не могу понять. С макросами почти не работал вообще.
Помогите, пожалуйста.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.02.2019, 12:10
Ответы с готовыми решениями:

Отсутствие #ifdef, #define и подобного. Есть ли альтернатива?
теперь уперся в отсутствие в C# #ifdef, #define и подобных штучек. что есть аналогичное? можно ли те же задачи решить с помощью аттрибутов?...

Как реализовать директиву #define для создания шаблона отпределения #define ?
Здравствуйте уважаемые. При написании программы появилась необходимость задать шаблон создания #define через #define (извините за...

Скрытие столбцов. Ошибка App-define od obj-define error
Привет) помогите, пожалуйста, ответить на следующие вопросы: 1) выскакивает ошибка: App-define od obj-define error - как бы найти ее...

1
0 / 0 / 0
Регистрация: 26.07.2017
Сообщений: 59
04.03.2019, 14:29  [ТС]
Мое решение, если кому пригодится:
C++
1
2
3
4
5
6
7
8
9
10
#define IDS_PCH_TEXT_ERRORMESSAGE_DEFAULT_HEADER         "Текст"
 
#if defined IDS_PCH_TEXT_ERRORMESSAGE_HEADER
    #define ERRORMESSAGE_HEADER(str)                                        \
        if(!str.LoadString(IDS_PCH_TEXT_ERRORMESSAGE_HEADER))                   \
            str = IDS_PCH_TEXT_ERRORMESSAGE_DEFAULT_HEADER;
#else
    #define ERRORMESSAGE_HEADER(str)                                        \
        str = IDS_PCH_TEXT_ERRORMESSAGE_DEFAULT_HEADER;
#endif // IDS_PCH_TEXT_ERRORMESSAGE_HEADER
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.03.2019, 14:29
Помогаю со студенческими работами здесь

Оффис через некоторое время выдает: unknown key identifier in stringtable
Достал офис мож кто знает чем помочь !!! Поработав некоторое время выдает следующее unknown key identifier in stringtable Ивсе...

{$IFDEF MSWINDOWS} и подобное
как-то капался в sysutils.pas там повсюду такого рода записи, подскажите что они значат? для чего они, где можно об этом почитать? ...

Директива компилятора $IfDef
разбираюсь в коде, там есть {$ifdef DEMOMOD} переменную DEMOMOD ни где не могу найти. Где она объявляется?

ifdef и Ко, указатели в фунциях
1.как используются ifdef и endif 2. как реализоввать, ну например, такое: int myFunc(int *one, int *two, int *three) куда описание...

#ifdef, #elif defined и #else
Если нужно определить ОС, на которой запускается программа, можно воспользоваться такой системой: #ifdef __linux #define main()...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
ПЛИС
zxcha1ka_ 27.01.2026
AHDL Разработать программы для синтеза следующих устройств: 1. Параллельного регистра 4-х разрядного с синхронной загрузкой и асинхронным сбросом (обнулением); Пoмoгитe пoжaлyйстa
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru