Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Как исправить скрипт при переходе с W7 на W10? (http://forum.oszone.net/showthread.php?t=354455)

fwv 31-10-2023 11:26 3019222

Как исправить скрипт при переходе с W7 на W10?
 
Вложений: 3
В файле маткада (Mathcad v15.0 (M020 [MC15_M020_20121127]) имеется выпадающее меню, которое использует для своей работы VBS, оно каждому выбранному имени присваивает заданное значение. Меню работало в XP и W7, при открытии файла маткад в W10 сразу (без клика на меню) появляется ошибка.
Как исправить код меню, чтобы заработало в W10?

Примечания:
  1. В W7 и W10 маткад одной версии с одного дистрибутива.
  2. При работе в W7 для корректной работы требуется менять умолчательные параметры безопасности скриптов.

Код меню:
Код:

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 3019258

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

fwv 01-11-2023 10:31 3019300

if ScriptObj then ScriptObj.List() = ListArray end if

Так?

Sham 01-11-2023 12:54 3019322

И в следующей строке тоже обращение к 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 3019343

Цитата:

Цитата Sham
мы не знаем, где и когда инициируется ScriptObj »

Судя по скрину в 18 строке ошибка.

fwv 01-11-2023 15:42 3019349

Вложений: 1
Не знаю правильно ли я понял, сделал так:
Код:

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

Ошибки компиляции нет, но при клике по меню ошибка.

Sham 03-11-2023 05:46 3019438

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

fwv 03-11-2023 07:31 3019441

Антивируса на тестовой машине нет. Остальное попробую.


Время: 23:58.

Время: 23:58.
© OSzone.net 2001-