Здравствуйте gorodok, Вы писали:
G>Здравтвуите! G>Возникла необходимость генерации документов Word2000(рус) с текстом на разных языках (русский, английский, немецкий, румынский, ....). Для работы используется компонент Delphi TWordDocument. Текст вставтяется с помощью функции TypeText. В функцию TypeText передается WideString-строка, которой было присвоено значение AnsiString-строки с иноязычным текстом (язык заранее известен). В итоге 'проблемные' буквы этих языков выводятся русскими символами. Попытки использовать функцию Keyboard и свойство LanguageID ни к чему не привели. Единсвенно, чего я достиг — написал поцедуру, которая подменяет коды 'проблемных' символов на их 2-байтные аналоги (только для одного языка). Может быть уже существуют более универсальная функция?
G>Если кто-то знает как решить мою проблему, пожалуйста, откликнитесь!
Решение это или нет, не знаю, но основную ошибку кажется вижу.
Передавать надо не wide string, а unicode строку. Соответственно, преобразовавать ansi в unicode c помощью MultiByteToWideChar с CodePage, соответствующей требуемому языку. Присваивание скорее всего просто вызывает GetACP, и информация о языке теряется. Не знаю правда, не испоганит ли в дальнейшем эту строку TWordDocument или сам Word2000, вдруг кто нибудь из них не уникодный...
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.