![]() |
|
![]() ![]() ![]() |
|
pseud |
|
||||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 16 Всего: 40 |
Пишу подсистему для инфокиоска.
Мультиязычная. Точнее двуязычная - русский/английский. И все бы было хорошо, если бы так и оставалось [мульти = два]. Я, конечно, не верю словам Заказчика, который планирует пригласить кучу переводчиков и напереводить на кучу языков. Но разум подсказывает, что минимум +1 язык он таки высосет. Может немецкий, а может французский (главное, чтоб не арабский и не китайский). Воспоминания ползанья по форумам навеяли: "Юникод... Проблемы... Опа..." Инструментарий: Delphi 6 Update Pack 2, Paradox, BDE. Да, есть уйма юникодовых компонентов (в частности, TNT). Да, дам я пользователю ввести в них всякие немецкие "умляуты" и прочие европейские буковки с закорючками то сверху/то снизу. А как эту радость сохранить в БД. Как ее оттуда достать. Как отобразить тупо в Label. Уже видел во сне как вместо TEdit у меня сплошные TJvRichEdit, как сохраняю я значения полей не в БД, а в rtf-файлы. Кошмар. Решил задать вопрос на форуме (делаю я это не то что редко, а.... 2 раза за все время пребывания). Создал демо проектик, чтобы было людям куда тыкнуть меня носом. Без использования сторонних компонентов, чтобы у всех компилилось с базовой установкой. TEdit, TDatabse, TQuery, TDBGrid. И тут облом - ВСЕ РАБОТАЕТ. Итак Работающий_проект: (во вложении проект с табличкой Paradox. если установлен BDE, то все заработает) Таблица БД: - создана через Database Desktop - Paradox 7
Приложение: В группе Edit'ов для создания записи БД в первом Edit выставлено Font.Charset = RUSSIAN_CHARSET, в остальных - ANSI_CHARSET. Аналогично - правая группа для отображения записи из БД. В DBGrid1 вручную заваедены колонки и колонкам по аналогии с Edit'ами выставлены чарсеты. На скриншоте все показано: ![]() Грабли №1 Как известно, проекты Delphi 6, использующие базовые контролы, выглядят а-ля Win98. Для решения этого вопроса в D7 есть компонент XPManifest и все (ну или многое) приобретает вид XP (в Win XP, конечно). Немножко заточить руки и в D6 можно заюзать этот манифест. Что я всегда и делаю. Что было замечено: - никаких чарсетов выставлять не нужно в Edit'ах. В одном Edit можно писать и на русском, и на немецком, и на французском одновременно. - сохраняет в БД не то, что надо. А именно, например, вместо "а-умляут" - "просто-а". отключаем манифЭст, и идем жевать агрЭст Грабли №2 На них я наступил сразу же. Даже из-за них чуть не пошел другим путем. Хорошо в офисе много тачек и не на всех эта проблема "решена". С многими прогами случаются казусы, ака: - фотошоп русифицированный пишет кракозаблы - детская игра с конячками в диалогах конячек пишет ?????? - DatabaseDesktop (ой стыыыдно) - тоже че та там вместо русского кочевряжит. Лезем на форумы. А кто поумнее - копаем память. И опа - решение найдено. Лезем в реестр и правим кодовые страницы: 1252 присваиваем "1251.nls" (а на всякий случай и 1250 := "1251.nls") Перезагружаемся - УРА. Все работает. Зато у нас ничего не работает. Вот на эти грабли я и наступил.
Смотрим Панель управления/Язык/Дополнительно: ![]() 1252 (ANSI - латиница 1) Так какого ... фига мы ее обзываем кирилицей? Какого фига мы должны страдать от ... Adobe-программистов? ;) возвращаем все кодовые страницы на свои места (привет рашн_фотошоп_пользователям) Вложение: Это сообщение отредактировал(а) pseud - 22.10.2008, 12:31 Присоединённый файл ( Кол-во скачиваний: 24 ) ![]() -------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |