Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2007, 20:10   #1
r-sol
Пользователь
 
Регистрация: 05.04.2007
Сообщений: 10
По умолчанию Смена кодировок в тексте

добрый день! проблема такая.
У пользователя текст со смешанием русского с разными другими языками - это электронные учебники, где в математике встречаются греческие символы, в немецком и французском соотетсвенно русские символы смешаны с европейскими и т.д. Но мне необходимо хранить все это в обычных текстовых строках.
Выход был найден такой - хранить в отдельных строчках каждый кусок с разной кодировкой, а рядом тип кодировки для каждой строки. Потом пользователям для редактирования каждый кусок по очереди я показываю в объекте Memo, включая шрифту каждый раз нужную кодировку. А для показа им готового смешанного текста вывожу на Canvas все куски тоже по очереди, каждому указывая кодировку. В обычном Блокноте Windows все выглядит примерно так же - одни и те же символы при смене кодировки через меню Шрифт превращаются в символы разных кодировок. На свежеустановленной винде все работает.
Однако, оказалось, что в каких-то ситуациях винда начинает работать иначе. В том же блокноте, и, соответсвенно в моей программе тоже, смена кодировки уже ни к чему не приводит, блокнот неожиданно начинает работать, видимо, в Юникоде, и текст набранный в русской раскладке никакой силой не превращается в греческий. Хотя, повторю, после установки видны, ситуация была не такой, и блокнот, и все текстовые объекты Борлада, работали с текстом "по старинке" - символ+кодировка.
Перейти полностью на Юникод я не могу, т.к. у пользователей сплошь и рядом win98. Да и, если честно, не знаю как получается, что объекты, работающие с текстом - и Memo, и кнопки - работают то так, то иначе. Видимо, они базируются на какой-то установке винды - может кто-то знает - что это за установка, какая сила ее меняет, и как ее хотя бы проверить для корректной работы программы?
Спасибо!
r-sol вне форума Ответить с цитированием
Старый 05.04.2007, 20:48   #2
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

Можно проблему решить используя картинки? текст на картинке. а потом сливать на канву. *.gif - много места не занимает.
Alar вне форума Ответить с цитированием
Старый 05.04.2007, 20:57   #3
r-sol
Пользователь
 
Регистрация: 05.04.2007
Сообщений: 10
По умолчанию

спасибо, но с картинками не выйдет - пользователи должны иметь возможность править текст ((.
Да и тут уже просто интересно разобраться - почему такое происходит, ведь блокнот - вроде ж бы примитивнейшая вещь - а такие чудеса с ним. И ведь это отражается на всех борландовских объектах, которые с текстом работают, т.е. должны были с этим столкнуться все, кто мультиязычные интерфейсы создает. Неужели не сталкивались?
r-sol вне форума Ответить с цитированием
Старый 06.04.2007, 11:55   #4
r-sol
Пользователь
 
Регистрация: 05.04.2007
Сообщений: 10
По умолчанию

ответ найден своими силами, оказалось что на компе в панели управления/Язык и региональные стандарты была отключена поддержка всех языков кроме русского - кто-то решил экономить место и все остальные раскладки поудалял...
r-sol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск в тексте Rigard Общие вопросы Delphi 8 15.10.2008 00:06
Помогите с программой на С++ "текстовый редактор с поддержкой нескольких кодировок" alwa Помощь студентам 1 05.06.2008 19:48
Проблема кодировок!!! chekanoff Общие вопросы Delphi 4 04.12.2007 00:03
картинка в тексте Prisian Общие вопросы Delphi 2 05.10.2007 14:01