Войти

Показать полную графическую версию : Как исправить скрипт при переходе с W7 на W10?


fwv
31-10-2023, 11:26
В файле маткада (Mathcad v15.0 (M020 [MC15_M020_20121127]) имеется выпадающее меню, которое использует для своей работы VBS, оно каждому выбранному имени присваивает заданное значение (http://forum.oszone.net/attachment.php?attachmentid=169181&stc=1&d=1698739748). Меню работало в XP и W7, при открытии файла маткад в W10 сразу (без клика на меню) появляется ошибка (http://forum.oszone.net/attachment.php?attachmentid=169182&stc=1&d=1698740058).
Как исправить код меню, чтобы заработало в W10?

Примечания:
В W7 и W10 маткад одной версии с одного дистрибутива.
При работе в W7 для корректной работы требуется менять умолчательные параметры (http://forum.oszone.net/attachment.php?attachmentid=169183&stc=1&d=1698740501) безопасности скриптов.


Код меню:
Sub ScriptObjEvent_Start()
End Sub
Sub ScriptObjEvent_Exec(Inputs,Outputs)

Dim ValueArray(4)
Dim ListArray(3)

ValueArray(0) = 8.5
ValueArray(1) = 11.5
ValueArray(2) = 14.5
ValueArray(3) = 17

ListArray(0) = "В15"
ListArray(1) = "В20"
ListArray(2) = "В25"
ListArray(3) = "В30"

ScriptObj.List() = ListArray
If (ScriptObj.ListIndex < 0) Then Outputs(0).Value = 0 Else Outputs(0).Value = ValueArray(ScriptObj.ListIndex)
End Sub
Sub ScriptObjEvent_Stop()
Rem TODO: Add your code here
End Sub

Sham
31-10-2023, 17:53
Пробуйте обернуть код, где используется ScriptObj внутри sub, в условие "if ScriptObj then .... end if" - ошибки не должно быть, но инициализацию этого объекта по-любому надо где-то искать.

fwv
01-11-2023, 10:31
if ScriptObj then ScriptObj.List() = ListArray end if

Так?

Sham
01-11-2023, 12:54
И в следующей строке тоже обращение к ScriptObj. Тупо if ScriptObj then
ScriptObj.List() = ListArray
If (ScriptObj.ListIndex < 0) Then Outputs(0).Value = 0 Else Outputs(0).Value = ValueArray(ScriptObj.ListIndex)
end if
мы не знаем, где и когда инициируется ScriptObj.

fwv
01-11-2023, 15:28
мы не знаем, где и когда инициируется ScriptObj »
Судя по скрину (http://forum.oszone.net/attachment.php?attachmentid=169182&d=1698740058) в 18 строке ошибка.

fwv
01-11-2023, 15:42
Не знаю правильно ли я понял, сделал так:
Sub ScriptObjEvent_Start()
End Sub
Sub ScriptObjEvent_Exec(Inputs,Outputs)

Dim ValueArray(4)
Dim ListArray(3)

ValueArray(0) = 8.5
ValueArray(1) = 11.5
ValueArray(2) = 14.5
ValueArray(3) = 17

ListArray(0) = "В15"
ListArray(1) = "В20"
ListArray(2) = "В25"
ListArray(3) = "В30"

If ScriptObj Then
ScriptObj.List() = ListArray
If (ScriptObj.ListIndex < 0) Then Outputs(0).Value = 0 Else Outputs(0).Value = ValueArray(ScriptObj.ListIndex)
End If
End Sub
Sub ScriptObjEvent_Stop()
Rem TODO: Add your code here
End Sub
Ошибки компиляции нет, но при клике по меню ошибка (http://forum.oszone.net/attachment.php?attachmentid=169189&stc=1&d=1698842446).

Sham
03-11-2023, 05:46
В режиме совместимости не пробовали Mathcad запускать? Можно копнуть в сторону антивируса (добавить в исключения папку), или на тему отключённых компонентов dcom или регистрации библиотек в сравнении с предыдущими системами. В "просмотре событий" может быть что-то более подробное. Procmon в этом деле очень может помочь (отследить куда софт лезет и чего не находит).

fwv
03-11-2023, 07:31
Антивируса на тестовой машине нет. Остальное попробую.




© OSzone.net 2001-2012