Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Несовпадение типов VFP и API SolidWirks / 9 сообщений из 9, страница 1 из 1
26.06.2009, 14:58
    #36061805
shanton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несовпадение типов VFP и API SolidWirks
Есть пример на VB вызова API-функции GetParameters COM приложения SldWorks.Application:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
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


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

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
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 пробую визывать её так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
	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, всё равно "несовпадение типов". Может кто подскажет как ещё можно попробовать? Большое спасибо!
...
Рейтинг: 0 / 0
26.06.2009, 17:33
    #36062216
-=AlexiS=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несовпадение типов VFP и API SolidWirks
а массивы тоже пробовал ?
...
Рейтинг: 0 / 0
26.06.2009, 18:03
    #36062264
shanton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несовпадение типов VFP и API SolidWirks
-=AlexiS=-а массивы тоже пробовал ?
Пробовал масив + COMARRAY():
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
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-серверу, и получения их обратно.
...
Рейтинг: 0 / 0
26.06.2009, 18:18
    #36062286
-=AlexiS=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несовпадение типов VFP и API SolidWirks
Попробй создать массив с большей размерностью , чтобы в него поместились все параметры.
если мой склероз мне не изменяет
Код: plaintext
Dim vConfParam              As Varian
это обьявление массива переменной длины - по сути просто указателя.
А в фоксе к сожалению такой фишки нет.
...
Рейтинг: 0 / 0
26.06.2009, 18:30
    #36062301
shanton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несовпадение типов VFP и API SolidWirks
Означает ли это что решения даной проблемы не существует, или стоит поборотся? Очень жаль будет если фокс в этот раз подведёт.
...
Рейтинг: 0 / 0
26.06.2009, 18:37
    #36062309
shanton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несовпадение типов VFP и API SolidWirks
В фоксе есть тип Variant:
Код: plaintext
1.
2.
Variant представляет собой специальный тип данных, который может содержать любой вид данных, за исключением строковых данных фиксированной длины. Тип данных Variant может быть иметь специальные значения Empty, Error и NULL. Этот тип данных используется внешними клиентами приложений Visual FoxPro, так как Visual FoxPro не является языком со строгой типизацией данных.

Пробую так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
	

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)

получаю туже ошибку.
...
Рейтинг: 0 / 0
26.06.2009, 18:55
    #36062335
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несовпадение типов VFP и API SolidWirks
shanton,

А с собакой в comarray не пробовали?
...
Рейтинг: 0 / 0
26.06.2009, 19:14
    #36062347
shanton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несовпадение типов VFP и API SolidWirks
tanglirshanton,

А с собакой в comarray не пробовали?
Если я вас правельно понял, надо:

Код: plaintext
COMARRAY(@swApp, 11 )

но так ошибка "Function name is missing"
...
Рейтинг: 0 / 0
26.06.2009, 21:39
    #36062454
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несовпадение типов VFP и API SolidWirks
shanton,
Это я жестоко затупил, собаке там не место.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Несовпадение типов VFP и API SolidWirks / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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