0 / 0 / 0
Регистрация: 12.02.2014
Сообщений: 5

Неверные кодировоки при вводе текста (DLL)

12.02.2014, 15:59. Показов 1488. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Проблема следующая: Написана dll внушительных размеров с большим количеством форм, на формах используются компоненты DevExpress. При старте dll из одной программы все компоненты работают должным образом, а при старте из другой программы русский текст который вводится в любые текстбоксы, вводится в другой кодировке(только в раскладке RU). Таким образом при вводе текста "АБВ" вводится "?0@". Если делать копипаст то всё вставляется в правильной кодировке. При этом на некоторых формах всё работает как надо. Проблема появилась совсем недавно, раньше работало всё как надо. Не могу найти никаких зависимостей, что за шайтан? Помогите решить проблему...
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.02.2014, 15:59
Ответы с готовыми решениями:

При вводе даты рождения и номера телефона в структуру выдает неверные данные
#pragma hdrstop #pragma argsused #include <tchar.h> #include <stdio.h> #include <conio.h> #include <iostream.h> #include...

Выравнивание текста в ячейке грида при вводе текста
Вечер добрый. Не подскажите, у меня выравнивание работает (по вертикале и 5 пикселей от левого края по горизонтали) int x,y; x =...

При программмирование калькулятора выдает ошибку при вводе текста
Подскажите пожалуйста не могу понять почему при нажатии в калькуляторе на кнопку выдает ошибку . подчеркивает слово txtDisplay красным....

8
 Аватар для Mawrat
13116 / 5897 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
12.02.2014, 16:26
Цитата Сообщение от MadCoder Посмотреть сообщение
... При старте dll из одной программы все компоненты работают должным образом, а при старте из другой программы русский текст который вводится в любые текстбоксы, вводится в другой кодировке(только в раскладке RU). Таким образом при вводе текста "АБВ" вводится "?0@". ...
Код DLL выполняется в контексте вызывающего приложения. И если вызывающий код задаст локаль (кодовую страницу, например), которая отличается от той локали, под которую проектировалась DLL, то возникнут те самые проблемы.
1
0 / 0 / 0
Регистрация: 12.02.2014
Сообщений: 5
12.02.2014, 16:33  [ТС]
Вызывающее приложение вроде проектировалось в той-же локали что и наше.Странно, но чуть ранее(недели две назад) всё работало как надо... И возможно ли для своей dll принудительно задать собственную локаль?
0
 Аватар для Mawrat
13116 / 5897 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
12.02.2014, 16:44
А система не менялась? Может ОС переустановили? Или на другом компе теперь приложение запускается? Или может на ОС поставлены обновления?
Цитата Сообщение от MadCoder Посмотреть сообщение
И возможно ли для своей dll принудительно задать собственную локаль?
Можно - SetLocaleInfo(). Только это чревато. Т. е., вот мы в программе вызвали функцию из DLL, а она взяла и подменила локаль. И опять возникнут проблемы с показом текстов, только уже в функциях самого приложения. Надо для начала посмотреть в вызывающем коде - что там есть на счёт кодовых страниц.
1
0 / 0 / 0
Регистрация: 12.02.2014
Сообщений: 5
12.02.2014, 16:54  [ТС]
Цитата Сообщение от Mawrat Посмотреть сообщение
Надо для начала посмотреть в вызывающем коде
Такой возможности к сожалению нет... сейчас попробую с SetLocaleInfo().

Добавлено через 7 минут
SetLocaleInfo() не помогает...
0
 Аватар для Mawrat
13116 / 5897 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
12.02.2014, 17:15
Такой вызов надо добавить в каждую функцию DLL, которая показывает текстовые данные. Там надо сделать так - вначале функции DLL определить исходную локаль через GetLocaleInfo(), потом установить своё значение через SetLocaleInfo(). И перед выходом из функции вернуть исходную локаль через ещё один вызов SetLocaleInfo(). И ещё обернуть в try-except-end. Чтобы в случае исключения в функции DLL локаль была восстановлена на исходную.

Добавлено через 2 минуты
На время проверки, конечно, достаточно такие вызовы добавить только в те функции, которые будут использоваться при этой самой проверке.

Добавлено через 2 минуты
MadCoder, а можешь кинуть сюда пример испорченного текста? Желательно, чтобы там было несколько слов.
1
0 / 0 / 0
Регистрация: 12.02.2014
Сообщений: 5
13.02.2014, 08:12  [ТС]
Цитата Сообщение от Mawrat Посмотреть сообщение
MadCoder, а можешь кинуть сюда пример испорченного текста? Желательно, чтобы там было несколько слов.
Я же говорю, отображаемый текст нигде не испортился, всё отображается отлично, и методы с текстом работают отлично, но когда вводишь в любой текстовый компонент какой-либо текст в раскладке RU - он вводится другими символами, например вводим "абвгдежзийклмн" - получаем "0123456789:;<=" и т.п. При этом на некоторых формах всё вводится нормально... Никаких преобразований текста при вводе не производится. Ещё подключена к проекту EurekaLog, но она врядли как-то повлияла бы на вводимый текст.

Добавлено через 4 минуты
Пример вводимого текста: Вводим - "Съешь еще этих мягких французских булочек", получаем - "!J5HL 5I5 MB8E <O3:8E D@0=FC7A:8E 1C;>G5:"
0
 Аватар для Mawrat
13116 / 5897 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
13.02.2014, 12:50
Лучший ответ Сообщение было отмечено MadCoder как решение

Решение

Цитата Сообщение от MadCoder Посмотреть сообщение
Пример вводимого текста: Вводим - "Съешь еще этих мягких французских булочек", получаем - "!J5HL 5I5 MB8E <O3:8E D@0=FC7A:8E 1C;>G5:"
Сейчас проверил этот текст через декодер Лебедева. Вот какая получилась последовательность преобразований: 7-bit ASCII → CP437 + CP866 → ISO-8859-5. В общем, преобразование проходит по путям:
7-bit ASCII → CP866 → ISO-8859-5
7-bit ASCII → CP437 → ISO-8859-5
Но с потерей первого символа.
MadCoder, к сожалению, я сейчас не имею чёткого представления, что здесь конкретно можно предпринять...
1
0 / 0 / 0
Регистрация: 12.02.2014
Сообщений: 5
13.02.2014, 13:24  [ТС]
Спасибо большое за информацию. Буду разбираться, как справиться с этой проблемой...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.02.2014, 13:24
Помогаю со студенческими работами здесь

Ошибка при вводе текста
Здравствуйте, возник вопрос. Задача - проверить, идёт ли ряд положительных чисел по возрастанию. Проблема в том, что программа не даёт...

Изменение текста при вводе
Форумчане, доброго времени суток! К компьютеру подключен сканер штрихкодов. В процессе сканировании сканером штрихкода (замена ручного...

Подсвечивание текста при вводе
Привет ребят! С js - сом вообще не дружу, помогите пожалуйста кто может. В общем проблема такая, надо что бы при вводе в input...

Почему при вводе русского текста после cout<< при запуске программы выписывает какие то каракули
Почему при вводе русского текста после cout&lt;&lt; при запуске программы выписывает какие то каракули????

Автоматическое форматирование при вводе текста
В общем как производить автоматическое форматирование текста в конструкции например: public string her{get; set;} делать входную...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru