Тема: Глобальные переменные

Каким образом и где в TDMS можно определить в скриптах глобальные переменные (константы)?
Т.е. нужно чтобы область видимости их была из любого скрипта.

' Константы цветов иконок
Public cIconColorDefault
cIconColorDefault = 0

Пробовал размещать в "Общесистемном скрипте" и в скрипте команды CMD_SCRIPT, которы потом подключал через USE CMD_SCRIPT - не видит переменную через

MsgBox("Значение=" & cIconColorDefault)

Re: Глобальные переменные

vlalexey пишет:

Каким образом и где в TDMS можно определить в скриптах глобальные переменные (константы)?
Т.е. нужно чтобы область видимости их была из любого скрипта.

' Константы цветов иконок
Public cIconColorDefault
cIconColorDefault = 0

Пробовал размещать в "Общесистемном скрипте" и в скрипте команды CMD_SCRIPT, которы потом подключал через USE CMD_SCRIPT - не видит переменную через

MsgBox("Значение=" & cIconColorDefault)

в хелпе ThisApplication.Dictionary

Re: Глобальные переменные

vorona пишет:

в хелпе ThisApplication.Dictionary

Про вариант с Dictionary да, понятно. Заполнять его надо, как я понимаю, в "Общесистемном скрипте"?

Мне нужны константы, для передачи параметрами в функции.
Других способов определить эти константы для всех скриптов кроме как используя Dictionary нет?

Так и должно быть, что у меня не были видны глобальные переменные, объявленные в  "Общесистемного скрипта" и в USE CMD_SCRIPT?

(изменено: vlalexey, 14 сентября 2010г. 07:15:38)

Re: Глобальные переменные

vlalexey пишет:

Других способов определить эти константы для всех скриптов кроме как используя Dictionary нет?
Так и должно быть, что у меня не были видны глобальные переменные, объявленные в  "Общесистемном скрипте" и в USE CMD_SCRIPT?

Так и есть? (или я некорректно вопрос поставил?)

(изменено: McZag, 17 сентября 2010г. 09:15:06)

Re: Глобальные переменные

vlalexey пишет:

Так и есть? (или я некорректно вопрос поставил?)

Вы правильно поставили вопрос.

Давайте, я немного объясню теорию. У нас с этим беда, поэтому, ваш вопрос - это дырка в документации.

Скрипт машина не работает постоянно. Она каждый раз запускается, когда в этом возникает потребность. Инициировать запуск скрита может TDMS, пользователь или внешняя среда через API TDMS.

Даже если бы нам удалось создать "вечную" скрипт машину, которая запускается только один раз на старте приложения, а дальше ловит указания, что ей выполнять, то нам бы пришлось совковой лопатой разгребать последствия такого решения. Кроме программистских заморочек с СОМ, возникает проблема сохранности ваших переменных.

Скрипт падучь. Скрипт не пишут также надежно, как и компилируемый код. Причины этого могут быть разными, но результат один. Когда падает TDMS, это настоящие событие. Если упал скрипт - залез, поправил кусок кода, работаем дальше. Без лишних эмоций.

Что происходит после падения скрипта, я думаю, вы знаете. Поэтому словарь TDMS - это более надежное укрытие ваших глобальных переменных. К тому же он более глобален, чем скрипт. К словарю вы можете обратиться из любой внешней среды.

Собственно, ответом на ваш вопрос будет фраза "Да, так и должно быть". Ваш "Общесистемный скрипт" и CMD_SCRIPT, отработав, ушли. Их нет. Но они могут оставить свои данные в атрибутах приложения, атрибутах объектов, в словаре, в атрибутах пользователей.

Re: Глобальные переменные

McZag пишет:

Вы правильно поставили вопрос.
Давайте, я немного объясню теорию. У нас с этим беда, поэтому, ваш вопрос - это дырка в документации

Спасибо за подробный ответ.
Вопрос снят.