powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / com и activate
6 сообщений из 6, страница 1 из 1
com и activate
    #35501009
ajkot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Есть такая .dll - ImageMagickObject. Использую Activate, чтобы подключить ее к Cache. И есть такой метод Convert. Activate создает для этого метода:

Method Convert(ByRef pArrayVar As %Activate.SafeArray) As %Activate.Variant [ Final, Language = cache ]
{
New %result,%parms
Set %parms=$ListBuild(i%%IDispatchPtr,$$$INVOKEFUNC,6)
Set %parms=%parms_..%FormatKnownParam(.pArrayVar,3,16411)
Set %result=$ZF($$$ORDINAL,$$$HANDLE,$$$ActXInvoke,%parms)
If $List(%result,1)'=0 $$$ActXRaise(%result)
Do ..%CopyBack(.pArrayVar,16411,$List(%result,5),"",0)
Quit ..%MakeVariantReturnValue(%result)
}

В VisulStudio (ObjectBrowser) этот метод выглядит так
Function Convert(pArrayVar() As Variant) As Variant
Member of ImageMagickObject.MagickImage

Поблема в следующем при таком запуске
s im=##class(Activate.ImageMagickObject.MagickImage).%New()
s res = im.Convert("c:/1.jpg c:/2.gif")
Cache вываливается в отладчик VS.

При запуске
s im = ##class(%Activate.GenericObject).CreateObject("ImageMagickObject.MagickImage")
s res = im.InvokeMethod1("Convert","c:/1.jpg c:/2.gif")
Cache ругается на неверное число аргументом (objlasterror Исключение COM -21....)
(пробовал s res = im.InvokeMethod2("Convert","c:/1.jpg","c:/2.gif") не получилось такая же ошибка)

А вот код на VBS
Set img = CreateObject("ImageMagickObject.MagickImage.1")
msgs = img.Convert("'c:/1.jpg'","'c:/2.gif'")
Работает нормально

Подскажите,пожалуйста, в чем проблема
Андрей (Cache 2008.1 winxp sp2)
...
Рейтинг: 0 / 0
com и activate
    #35501728
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я в пятерке не нашел класса %Activate.SafeArray. Вероятно, это новый из 2008.
Что, если нужно сделать объект такого класса, его заполнить и потом передать как аргумент?
...
Рейтинг: 0 / 0
com и activate
    #35501799
ajkot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
datatype class %Activate.SafeArray extends %String

ODBC Type: VARCHAR

Class to represent SafeArray types for Activate. Array types cannot be supported by Activate.If the signature of an Activate generated contains an %Activate.SafeArray then activate will attempt to coerce that type to a string. This may or may not be successful depending upon the implementation of the ActiveX object that defines it

Summary
Методы
DisplayToLogical IsValid LogicalToDisplay Normalize

Я выделил жирным фразу которая конечно может ответить на часть вопроса. Но тогда почему не работает вызов через InvokeMethod1
...
Рейтинг: 0 / 0
com и activate
    #35506001
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To ajkot
Вам обязательно нужно работать с ImageMagick через COM?

Попробуйте так:
Код: plaintext
set res=$zf(- 1 ,$zu( 147 ,"C:\Program Files\ImageMagick-6.4.3-Q16\convert.exe")_" "_$zu( 147 ,"c:\1.jpg")_" "_$zu( 147 ,"c:\2.gif"))

Если все файлы находятся в каталоге текущей области, то можно проще:
Код: plaintext
set res=$zf(- 1 ,"convert 1.jpg 2.bmp")
...
Рейтинг: 0 / 0
com и activate
    #35506100
ajkot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Servit
Добрый день!
Да действительно можно использовать zf(-1) к этому я уже пришел. Но для такого использование необходима установка всего пакета, а с com мне хватит 3 dll. Хотелось красиво решить проблему. Да и потом немного раздражает тот факт, что не могу понять в чем проблема заключается. Я, например, использовал com для связи с 1С(77,8) и никаких трудностей не возникало...

В любом случае Спасибо за совет
...
Рейтинг: 0 / 0
com и activate
    #35689431
Бор_ис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ajkot To Servit
использовал com для связи с 1С(77,8)
можете кинуть пример?
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / com и activate
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]