Показать сообщение отдельно
Старый 09.12.2004, 12:42   #3  
Alks is offline
Alks
Участник
 
336 / 41 (2) +++
Регистрация: 23.07.2004
Адрес: г. Новокузнецк
У меня точно такая же по сути проблема возникла когда я вызывал из аксапты 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 OPOSDriverTScanner;
...
OPOSDriver := TScanner.Createnil );
OPOSDriver.someMethod(...) 
...и получил корректно работающий код без всяких сообщений об ошибках со стороны аксапты.
Тут то я и попух, потому что никак не смог объяснить произошедшее.
До сих пор всё так и работает.