This is topic Строки в программе in forum Языки программирования в TRACE MODE 6 / Algorithm Programming Languages at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/33/t/000077.html

Posted by Андрей Мельников (Участник № / Member № 3046) on :
 
Существует ли ограничение на количество переменных описанных в программе как STRING?
Если в программе больше 14 переменных string, то программа переходит в состояние Off и не выходит из него.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Есть ограничение в 4 КБ, выделяемых под аргументы программы. Т.к. под аргумент типа String выделяется 256 байт, то всего их может быть максимум 14-15.
 
Posted by Baikal_E (Участник № / Member № 4135) on :
 
В сегодняшних реалиях 14-15 "стрингов" для одной программы уже не хватает порой. Если есть возможность, увеличьте хотя бы до 25 в будущих релизах.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Увеличение не планируется. Для каких целей Вам нужно 25 строковых аргументов?
 
Posted by Baikal_E (Участник № / Member № 4135) on :
 
Для программной реализации вывода разного рода сообщений.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Куда Вы собираетесь выводить сообщение?

Если на экран, то лучше воспользоваться каналом Call.String.
 
Posted by gip1 (Участник № / Member № 3875) on :
 
Есть необходимость наложить пароль на вызов экрана. Для обслуживания процедур разрабатываю программу на ST, однако возникают трудности со сравнением строковых переменных: оператор "==" не действует, для работы со строками в справке ничего нет. Возможно ли программно сравнивать строки, как это сделать, существуют ли специальные готовые средства для работы с паролями?
 
Posted by Romсheg (Участник № / Member № 3792) on :
 
Со строками вообще-то должно работать и сложение и сравнение, так что - это ошибка ТМ. Сейчас тоже проверил - действительно не работает.

А вот для паролей ничего нет, мы в своих проектах для этого разрабатывали собственное решение в виде DLL и подключали к ТМ.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Операции со строками, кроме конкатенации, в Trace Mode 6 не декларированы.

Почему не удовлетворяет система доступа к экранам, заложенная в правах ПОЛЬЗОВАТЕЛЯ?
Почему нельзя воспользоваться числовым паролем?
 
Posted by Romсheg (Участник № / Member № 3792) on :
 
2AdAstra Technical Support:
А вот и неправда ваша - декларируете: в ТМ6 декларируется поддержка стандарта МЭК при разработке алгоритмов! [Пдмигивание / Wink] Нужно придерживаться стандарта, где это декларировано. А то получается не стандарт вовсе. Кстати, в МЭК по части работы со строковыми типами данных довольно много чего декларировано, что в ТМ6 не поддерживается вообще. Например: страница 204 - "стандартные функции", среди которых LEN, LEFT, RIGHT, MID, CONCAT, INSERT, DELETE, REPLACE, FIND - все работают с типом данных STRING. Назначение расшифровывать не буду, из названий понятно.
Очень часто приходится со строками работать в проектах, а тут мало того, что атрибуты каналов строковые накладывают ограничения на размер, так еще и в математике никак не обработаешь. [Неодобрение / Frown]
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Мы учтем Ваше замечание.
 
Posted by Baikal_E (Участник № / Member № 4135) on :
 
quote:
Отправитель / Originally posted by AdAstra Technical Support:
Куда Вы собираетесь выводить сообщение?

Если на экран, то лучше воспользоваться каналом Call.String.

Здравствуйте. Скажите, пожалуйста, в каком релизе появился канал Call.String ?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
В релизе 6.06.2.
 
Posted by Baikal_E (Участник № / Member № 4135) on :
 
Спасибо за ответ
 
Posted by Баранов Вячеслав (Участник № / Member № 6904) on :
 
Здравствуйте. У меня при использовании в программе уже третьей переменной типа string начались проблемы. В строку записывал сформированное значение часов (h)и минут (m), привязывал полученное значение к атрибуту 80 канала и выводил на экран.
time1:=h1+" ч "+m1+" мин.";
time2:=h2+" ч "+m2+" мин.";
time3:=h3+" ч "+m3+" мин.";
Первые два значения вычисляются и записываются без проблем, а вот третье - вместо минут на экран выводится знак "?". Пришлось разбивать программу на несколько частей, чтобы вывести все необходимые строковые переменные. Так и должно быть или я что-то не так делаю?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Проблемы в конкатенации действительно существуют, и в настоящее время устранить их не представляется возможным.

Несмотря на то, что входные переменные получаются от целочисленных атрибутов, конкретно в Вашем примере достаточно объявить тип данных числовых аргументов REAL.
 
Posted by Баранов Вячеслав (Участник № / Member № 6904) on :
 
Спасибо, помогло. До этого тип переменных был - DINT.
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2