Module переменные

Обсуждение SCADA-систем: Citect SCADA, Vijeo Citect, CitectSCADA, CitectFacilities, PowerLogic SCADA, PowerSCADA, MX4SCADA, Desigo Insight.
kvn
Сообщений в теме: 3
Сообщения: 105
Зарегистрирован: 08 сен 2015, 12:12
Откуда: Екатеринбург
Благодарил (а): 10 раз

Module переменные

#1

Сообщение kvn » 14 сен 2015, 13:47

Столкнулся с необходимостью в Cicode записывать значения Handle по создаваемым их STRING именам.
Т.е.
1. создаю MODULE INT переменные -
MODULE INT hSubsHandle_CN1_0 = 0;
и т.п. ....................................
2. в функции формирую STRING имена этих переменных-
STRING sSubsHandle_CN_0 = "hSubsHandle_" + sCN + "_0";
и т.п .....................................
Существует возможность используя эти STRING имена выполнять запись из функции значений hSubsHandle_CN1_0 и подобных?
Или потребуется создавать локальные переменные для хендл?



Аватара пользователя
alex
Администратор
Сообщений в теме: 2
Сообщения: 1781
Зарегистрирован: 05 апр 2010, 21:58
Откуда: Москва
Благодарил (а): 52 раза
Поблагодарили: 111 раз
Контактная информация:

Re: Module переменные

#2

Сообщение alex » 14 сен 2015, 16:26

В Cicode такое невозможно, т.е. обратиться к переменной Cicode по ее строковому имени. Тут я думаю можно либо реализовать ассоциативный массив (DLL, .NET) по моему где-то была такая реализация, когда имя выступает ключом для доступа к значению, либо использовать локальные теги.



flashguest
Сообщений в теме: 2
Сообщения: 3
Зарегистрирован: 22 окт 2015, 23:04
Поблагодарили: 1 раз

Re: Module переменные

#3

Сообщение flashguest » 06 ноя 2015, 17:19

kvn
Подобное можно реализовать на базе Queue. В них как раз элемент представлен двумя значениями: целочисленным и строковым.



kvn
Сообщений в теме: 3
Сообщения: 105
Зарегистрирован: 08 сен 2015, 12:12
Откуда: Екатеринбург
Благодарил (а): 10 раз

Re: Module переменные

#4

Сообщение kvn » 12 ноя 2015, 14:59

kvn
Подобное можно реализовать на базе Queue. В них как раз элемент представлен двумя значениями: целочисленным и строковым.

Не понятно - как такое возможно выполнить используя Очередь?
Если можно объясните по подробнее...



flashguest
Сообщений в теме: 2
Сообщения: 3
Зарегистрирован: 22 окт 2015, 23:04
Поблагодарили: 1 раз

Re: Module переменные

#5

Сообщение flashguest » 17 ноя 2015, 14:12

kvn
Попробую объяснить. Queue по своей сути является динамическим массивом , каждый элемент которого представлен двумя значениями. Таким образом, становится возможным сформировать массив данных вида число-строка. Причем, количество элементов не ограничено (но по умолчанию составляет 256). Соответственно, Вы можете записать в массив элемент , содержащий например hSubsHandle_CN1_0 / sSubsHandle_CN1_0, а затем с помощью с помощью пары функций "достучаться" либо числового, либо строкового значений. Другими словами, берем строковое значение, ищем элемент, получаем доступ к соответствующему числовому значению. И наоборот. Скажем так, вариант не быстрый (количество значений) и не всегда применим (повторяемость значений), но в определенных случаях вполне себе выручает.

Пример из практики - как не допустить повторного открытия страницы : перед вызовом WinNewAt делаем поиск в массиве, элементы которого представлены номером окна и именем. В том случае, если элемент с конкретным именем есть, передаем фокус на уже открытую страницу. А если нет , то создаем новое окно и записываем новый элемент в массив (очередь).

Посмотрите Q4569 из базы знаний, если интересно.



kvn
Сообщений в теме: 3
Сообщения: 105
Зарегистрирован: 08 сен 2015, 12:12
Откуда: Екатеринбург
Благодарил (а): 10 раз

Re: Module переменные

#6

Сообщение kvn » 18 ноя 2015, 06:58

flashguest
Посмотрите Q4569 из базы знаний, если интересно.

Да, интересно. Спасибо.
База знаний - а где такую найти?



Аватара пользователя
alex
Администратор
Сообщений в теме: 2
Сообщения: 1781
Зарегистрирован: 05 апр 2010, 21:58
Откуда: Москва
Благодарил (а): 52 раза
Поблагодарили: 111 раз
Контактная информация:

Re: Module переменные

#7

Сообщение alex » 18 ноя 2015, 10:20

Вот же есть базы знаний.




Если эта тема может быть полезна другим, поделитесь ссылкой:

Вернуться в «Citect SCADA, Vijeo Citect, CitectSCADA, CitectFacilities, PowerLogic SCADA, PowerSCADA, MX4SCADA, Desigo Insight»