Delphi 6 типов строк изначально Ansi (один байт на символ). Тип COM "BSTR" и строковый тип .NET изначально являются Unicode UTF-16 (два байта на кодовую точку Unicode, большинство из которых соответствуют одному символу).
Если ваш код COM-функции в Delphi 6 использует WideString вместо строки, вы можете без проблем выполнить вызов COM-функции. В противном случае, вы можете столкнуться с проблемой преобразования кодовой страницы, возможно. Также возможно преобразовать в турецкую кодовую страницу с помощью ANSIString, но, на мой взгляд, такое преобразование происходит неявно в вашем коде, поэтому вы должны искать эти неявные преобразования и устранять неправильное использование String (AnsiString), заменяя типы с WideString.
Существует два способа вызова функции COM, но вы не указали.
Вызов с использованием вариантов OLE.
вар
o: OleVariant;
WS: WideString;
начать
o: = CreateOleObject ('NameThing.OtherThingName');
o.MethodName (WS); // это должно работать. Примечание: НЕ используйте тип STRING здесь, в Delphi 6.
конец;
Вызов с использованием собственного COM с библиотекой типов. Детали того, как сделать это правильно, зависят от параметров вашей конкретной функции. Вы не указали, есть ли у вас блок MyUnit_TLB.pas, но если у вас есть, обновите вопрос и покажите метод, который вы вызываете.