powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Несовпадение типов VFP и API SolidWirks
9 сообщений из 9, страница 1 из 1
Несовпадение типов VFP и API SolidWirks
    #36061805
shanton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть пример на 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
Несовпадение типов VFP и API SolidWirks
    #36062216
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а массивы тоже пробовал ?
...
Рейтинг: 0 / 0
Несовпадение типов VFP и API SolidWirks
    #36062264
shanton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=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
Несовпадение типов VFP и API SolidWirks
    #36062286
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробй создать массив с большей размерностью , чтобы в него поместились все параметры.
если мой склероз мне не изменяет
Код: plaintext
Dim vConfParam              As Varian
это обьявление массива переменной длины - по сути просто указателя.
А в фоксе к сожалению такой фишки нет.
...
Рейтинг: 0 / 0
Несовпадение типов VFP и API SolidWirks
    #36062301
shanton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Означает ли это что решения даной проблемы не существует, или стоит поборотся? Очень жаль будет если фокс в этот раз подведёт.
...
Рейтинг: 0 / 0
Несовпадение типов VFP и API SolidWirks
    #36062309
shanton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В фоксе есть тип 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
Несовпадение типов VFP и API SolidWirks
    #36062335
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shanton,

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

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

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

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


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