Установить переменную (SetVariable)

Ответить
Аватара пользователя
Alex
Ас
Сообщения: 2833
Зарегистрирован: Вт апр 05, 2005 3:28 pm
Откуда: Kaliningrad City
Благодарил (а): 2 раза
Поблагодарили: 91 раз
Контактная информация:

Установить переменную (SetVariable)

Сообщение Alex » Вс июл 08, 2007 10:16 am

Миссия действия:
С помощью действия устанавливаются значения внутренним переменным программы. Значения этих переменных могут в дальнейшем использоваться в текущей задаче (если переменная локальная или глобальная) или в любой другой задаче системы (если переменная глобальная). Если переменной до установления значения не существовало, то она создается.

В действии можно обратиться к переменной по ее имени, при этом имя переменной должно быть заключено в квадратные скобки. Например:
SetVariable1: Var=X, Value=100
ShowMessage1: Text="X"
На экране должно появиться сообщение с текстом 100.
Подробнее о синтаксисе программы.

Переменные, значения которых не записываются в файл, существуют только в рамках того процесса, где произошел запуск действия. Так как сервисная часть и главное окно программы - это разные процессы, то переменная, установленная в главном окне путем запуска задачи по F9 не сможет быть считана в сервисной части программы задачей, запущенной по расписанию или событию. И наоборот, если значение переменной установлено задачей, запущенной по расписанию в сервисной части программы, то переменная не сможет быть считана при запуске задачи по F9 в конфигураторе задач.
Подробнее о различии сервисной части программы и конфигуратора задач (главного окна).

Поля на форме:
Имя переменной - Имя переменной, по которому в дальнейшем можно будет получить значение переменной;
Значение - Значение переменной. Подробнее об установлении значений переменных из командной строки;
Глобальная переменная - Признак, устанавливающий будет переменная глобальной или локальной. Локальные переменные доступны лишь в рамках текущей задачи действия, тогда как глобальные - в любой задаче системы.
Тип - Строка, Целое, С плав. запятой, Булево, Дата/время, Пароль
Хранить значение переменной в файле - Эта опция может быть полезна для сохранения значения переменной между перезапусками компьютера. Также эта переменные с этой опцией могут быть доступны и в задачах, запущенных из сервисной части, и в задачах конфигуратора.

Результирующие параметры:
Success - Результат выполнения действия, успешно или нет;

avmaksimov
Ас
Сообщения: 907
Зарегистрирован: Чт май 08, 2008 2:48 pm
Откуда: г. Москва, Россия
Благодарил (а): 6 раз
Поблагодарили: 16 раз
Контактная информация:

Re: Установить переменную (SetVariable)

Сообщение avmaksimov » Вс дек 21, 2008 8:06 pm

Прочитал синтаксис и, как я понял логику программу, то абсолютно неясно, для чего используется тип переменных, ведь во всех функциях (или которых я знаю) тип игнорируется... Яркий пример эта же функция: к примеру, задаю тип Integer, а значение "5.000000000001"... Делаю показать сообщение... Сообщение показывается как "5.000000000001", а не как "5", т.е. приведения типов не произошло...
Поясните, пожалуйста, в чем дело ... Или использование типа данных, что называется устарело и оставлено для совместимости???
С уважением, Андрей.

Аватара пользователя
Alex
Ас
Сообщения: 2833
Зарегистрирован: Вт апр 05, 2005 3:28 pm
Откуда: Kaliningrad City
Благодарил (а): 2 раза
Поблагодарили: 91 раз
Контактная информация:

Re: Установить переменную (SetVariable)

Сообщение Alex » Вс дек 21, 2008 8:43 pm

Приведения типов при действиях с переменными не происходит, оно происходит только при сравнении и в While. В этих случаях нужен точный тип переменных.

avmaksimov
Ас
Сообщения: 907
Зарегистрирован: Чт май 08, 2008 2:48 pm
Откуда: г. Москва, Россия
Благодарил (а): 6 раз
Поблагодарили: 16 раз
Контактная информация:

Re: Установить переменную (SetVariable)

Сообщение avmaksimov » Пн дек 22, 2008 9:39 am

Alex писал(а):Приведения типов при действиях с переменными не происходит, оно происходит только при сравнении и в While. В этих случаях нужен точный тип переменных.
Т.е. фактически все переменные хранятся в виде строк, а например, для математических операций приводятся к числу с плавающей точкой... В таком случае, тип переменной не более чем информативное поле?
С уважением, Андрей.

Аватара пользователя
Alex
Ас
Сообщения: 2833
Зарегистрирован: Вт апр 05, 2005 3:28 pm
Откуда: Kaliningrad City
Благодарил (а): 2 раза
Поблагодарили: 91 раз
Контактная информация:

Re: Установить переменную (SetVariable)

Сообщение Alex » Пн дек 22, 2008 9:44 am

Да, все переменные хранятся в виде строк. Именно это позволяет вставлять в поля переменные, функции и выходные параметры действий. Уже в самом скрипте действия происходит преобразование строки к нужному типу. Но тип переменной нужен для сравнения с другими переменными, потому что в виде строк сравнения не всегда корректны, например:

Код: Выделить всё

if '7.52'<>'1' then
...
или

Код: Выделить всё

if 7.52<>1 then
...
А также

Код: Выделить всё

if '01.01.2008'<>'7.10.2008' then
...
или

Код: Выделить всё

if StrToDate('01.01.2008')<>StrToDate('7.10.2008') then
...

avmaksimov
Ас
Сообщения: 907
Зарегистрирован: Чт май 08, 2008 2:48 pm
Откуда: г. Москва, Россия
Благодарил (а): 6 раз
Поблагодарили: 16 раз
Контактная информация:

Re: Установить переменную (SetVariable)

Сообщение avmaksimov » Вс апр 29, 2012 4:34 pm

Почему "Хранить значение переменной в файле" сейчас доступно только для глобальных переменных? Я попробовал сохранить и для обычных - все работает исправно! Правда, они становятся глобальными :(((... Может как-то можно хранить в разрезе задач? Может быть в том же месте (в реестре), где и значения переменных со вкладки "Переменные"?
С уважением, Андрей.

Ответить