Показать сообщение отдельно
Старый 29.01.2016, 16:27   #3  
poul_and is offline
poul_and
Участник
 
56 / 12 (1) ++
Регистрация: 08.04.2003
Цитата:
Сообщение от jopagames3
Цитата:
Сообщение от poul_and Посмотреть сообщение
Систенный язык НЕ русский.
...
Вышел из положения нарисовав отдельный фонт, в результате в базе хранится текст в виде (Ą/Ī "Āåķņįóķźåšń") а на экран и печать выводится (АО "РогаИКопыта").
Собственный фонт - это круто, чо! />
Вообще задача интересная.

А какой именно язык системный?
Как "русские буквы" попадают в базу? Пользователь вводит их с клавиатуры или загружает как текст из файла?
А как отличть именно русское название от локального (финского, например) если буквы одни и те же?

Как вариант можно попробовать поиграть с лицензией (она русская?). В ней хранится табличка преобразования кода клавиши в букву. В русской лицензии 1252 преобразуется в 866. Если база нативная - там вообще просто. Прямо в базу можно кусок этот вписать. С SQL не знаю... надо смотреть.

Можно с кодовой страницей в Винде поиграть. Главное, остальные приложения чтобы не затронуть />
А может, скуль может как-то конвертировать.

ЗЫ: Нет, вот с макросом Word - тупиковый вариант. Проще уж на Си написать своё консольное приложение, а файл передавать в качестве аргумента. Но прямо из Nav конвертировать, думаю, еще проще.

ЗЗЫ: А вообще, самому даже интересно, если несколько разных языков в системе, то что именно и как хранится в базе? С 2013 всё понятно - там уже UTF.
Системный язык латышский
База SQL, русского языка в лицензии нет.

"Русские буквы" вводятся с клавиатуры, переключив на русскую раскладку. В базе алфавит выглядит как ĄĮĀĆÄÅØĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽ, все эти символы - в неиспользуемой области и не перекрывают латышские. В моём фонте они заменены на русские, на экране пользователь видит АБВГД... В одном поле можно писать и по русски и по латышски (рсская и латышская А выглядят одинаково, но в реальности это разные символы)

С макросом вышло очень даже просто:
сам макрос вида

With Selection.Find
.Text = "Ą"
.Replacement.Text = ChrW(1072)
.Forward = True
.Wrap = wdFindContinue
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = "Į"
.Replacement.Text = ChrW(1073)
.Forward = True
.Wrap = wdFindContinue
End With
Selection.Find.Execute Replace:=wdReplaceAll
..........
так на все 33 буквы

Из Навижн открываем файл Вордом и запускаем Application.Run("MACRO_NAME")