Проблема связана с тем, что вы вызываете Word с помощью OLE-автоматизации с использованием позднего связывания.
Так что Range.Text
не известен как метод, ожидающий содержимое WideString (Unicode), но простой текст ASCII, под Delphi 7.
Первым решением может быть использование Delphi 2009 и более поздних версий. Новый тип string
сделал такое назначение Unicode прозрачным.
В Delphi 7, как насчет принудительного приведения типа к WideString:
table.Cell(1,2).Range.Text := WideString('MY TEXT');
или используя временную переменную, например:
var tmp: WideString;
tmp := 'ЉЊĐŠŽČ'
table.Cell(1,2).Range.Text := tmp;
Другой возможностью может быть использование не позднего связывания, а прямое объявление интерфейса OLE Office, импортирование « Microsoft Word ??? Object library » из меню «Проект» в IDE ,
В импортируемых интерфейсах будут самые широкие типы, например:
Range = interface(IDispatch)
['{0002095E-0000-0000-C000-000000000046}']
function Get_Text: WideString; safecall;
procedure Set_Text(const prop: WideString); safecall;
(...)
property Text: WideString read Get_Text write Set_Text;
Так что у вас больше не будет проблем с кодировкой Ansi.