У меня точно такая же по сути проблема возникла когда я вызывал из аксапты COM (disp) объект OPOS для сканнера штрих-кодов! Напрямую работать с этим COM-объектом из аксапты так и не удалось ввиду вышесказанного, поэтому я написал промежуточный COM-объект на Delphi - обёртку вокруг OPOS объекта и... ошибка осталась!
Тут надо сказать что я в своём промежуточном объекте на дельфи для достука к реальному OPOS объекту использовал примерно следующий по смыслу код:
PHP код:
var OPOSDriver: _DScanner;
....
OPOSDriver := CreateOleObject( 'oleobjectname' );
OPOSDriver.someMethod(...)
_DScanner - это интерфейс OPOS драйвера, вытащенный из его библиотеки типов стандартными средствами дельфи.
Так вот на строчке OPOSDriver.someMethod() возникало абсолютно то же самое исключение, что и при прямой работе из аксапты с OPOSDriver таким же образом! "Один или несколько аргументов имеют неправильный тип"....
По какому то наитию я изменил стратегию работы с этим COM-объектом. Delphi при импорте библиотек типов ком-объектов создаёт классы-загрушки вокруг импортированных ком-объектов, которыми можно пользоваться, а можно и не пользоваться. В данном случае он создал класс TScanner, реализующий _DScanner и изменив код в промежуточном COM-объекте на примерно следующий:
PHP код:
var OPOSDriver: TScanner;
...
OPOSDriver := TScanner.Create( nil );
OPOSDriver.someMethod(...)
...и получил корректно работающий код без всяких сообщений об ошибках со стороны аксапты.
Тут то я и попух, потому что никак не смог объяснить произошедшее.
До сих пор всё так и работает.