Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Несовпадение типов VFP и API SolidWirks  [new]
shanton
Member

Откуда: Украина г. Хмельницкий
Сообщений: 628
Есть пример на VB вызова API-функции GetParameters COM приложения SldWorks.Application:

Sub main()

    Dim swApp                   As SldWorks.SldWorks

    Dim swModel                 As SldWorks.ModelDoc2

    Dim swCnf             		As SldWorks.Configuration

    Dim vConfParam              As Variant

    Dim vConfValue              As Variant

    Set swApp = Application.SldWorks

    Set swModel = swApp.ActiveDoc

    Set swCnf  = swModel.GetActiveConfiguration()

    swCnf.GetParameters(vConfParam, vConfValue)

End Sub


синтаксис этой функции:

Configuration.GetParameters ( params, values)

Output:
 (VARIANT) params
 Array of the names of the parameters
 
Output:
 (VARIANT) values
 Array of the values of the parameters
 

в VFP пробую визывать её так:

	LOCAL m.lcCfgName

	m.lcValue = ''
	m.lcParams =''

	swApp = CreateObject("SldWorks.Application")
	swModel = swApp.ActiveDoc
	swCfgMng = swModel.ConfigurationManager()
	swCfg = swModel.GetActiveConfiguration()
	swCfg.GetParameters(@m.lcParams, @m.lcValue)

получаю ошибку "несовпадение типов". Пробовал задавать этим переменным всевозможные типы VFP, всё равно "несовпадение типов". Может кто подскажет как ещё можно попробовать? Большое спасибо!
26 июн 09, 14:58    [7348496]     Ответить | Цитировать Сообщить модератору
 Re: Несовпадение типов VFP и API SolidWirks  [new]
-=AlexiS=-
Member

Откуда: Одесса
Сообщений: 712
а массивы тоже пробовал ?
26 июн 09, 17:33    [7349710]     Ответить | Цитировать Сообщить модератору
 Re: Несовпадение типов VFP и API SolidWirks  [new]
shanton
Member

Откуда: Украина г. Хмельницкий
Сообщений: 628
-=AlexiS=-
а массивы тоже пробовал ?

Пробовал масив + COMARRAY():
LOCAL ARRAY m.lcParams(1) AS String, ;  
  		m.lcValue(1) AS String  
    
  	swApp = CreateObject("SldWorks.Application")  
  	= COMARRAY(swApp, 10)  
  	swModel = swApp.ActiveDoc  
  	swCfg = swModel.GetActiveConfiguration()  
    
  	swCfg.GetParameters(@m.lcParams, @m.lcValue)
результат тотже. Должен бать способ передачи масивов COM-серверу, и получения их обратно.
26 июн 09, 18:03    [7349934]     Ответить | Цитировать Сообщить модератору
 Re: Несовпадение типов VFP и API SolidWirks  [new]
-=AlexiS=-
Member

Откуда: Одесса
Сообщений: 712
Попробй создать массив с большей размерностью , чтобы в него поместились все параметры.
если мой склероз мне не изменяет
Dim vConfParam              As Varian
это обьявление массива переменной длины - по сути просто указателя.
А в фоксе к сожалению такой фишки нет.
26 июн 09, 18:18    [7350023]     Ответить | Цитировать Сообщить модератору
 Re: Несовпадение типов VFP и API SolidWirks  [new]
shanton
Member

Откуда: Украина г. Хмельницкий
Сообщений: 628
Означает ли это что решения даной проблемы не существует, или стоит поборотся? Очень жаль будет если фокс в этот раз подведёт.
26 июн 09, 18:30    [7350087]     Ответить | Цитировать Сообщить модератору
 Re: Несовпадение типов VFP и API SolidWirks  [new]
shanton
Member

Откуда: Украина г. Хмельницкий
Сообщений: 628
В фоксе есть тип Variant:

Variant представляет собой специальный тип данных, который может содержать любой вид данных, за исключением строковых данных фиксированной длины. Тип данных Variant может быть иметь специальные значения Empty, Error и NULL. Этот тип данных используется внешними клиентами приложений Visual FoxPro, так как Visual FoxPro не является языком со строгой типизацией данных.

Пробую так:
	

DIMENSION laParams(2000) AS Variant, laValues(2000) AS Variant

	FOR m.lnI = 1 TO 2000
		laParams(m.lnI) = NULL
		laValues(m.lnI) = NULL
	ENDFOR

	swApp = CreateObject("SldWorks.Application")
	COMARRAY(swApp,11)
	swModel = swApp.ActiveDoc
	swCfg = swModel.GetActiveConfiguration()
	swCfg.GetParameters(@laParams, @laValues)

получаю туже ошибку.

К сообщению приложен файл. Размер - 0Kb
26 июн 09, 18:37    [7350114]     Ответить | Цитировать Сообщить модератору
 Re: Несовпадение типов VFP и API SolidWirks  [new]
tanglir
Member

Откуда:
Сообщений: 28966
shanton,

А с собакой в comarray не пробовали?
26 июн 09, 18:55    [7350178]     Ответить | Цитировать Сообщить модератору
 Re: Несовпадение типов VFP и API SolidWirks  [new]
shanton
Member

Откуда: Украина г. Хмельницкий
Сообщений: 628
tanglir
shanton,

А с собакой в comarray не пробовали?

Если я вас правельно понял, надо:

COMARRAY(@swApp,11)

но так ошибка "Function name is missing"
26 июн 09, 19:14    [7350213]     Ответить | Цитировать Сообщить модератору
 Re: Несовпадение типов VFP и API SolidWirks  [new]
tanglir
Member

Откуда:
Сообщений: 28966
shanton,
Это я жестоко затупил, собаке там не место.
26 июн 09, 21:39    [7350440]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить