Тема / Topic: Запись текста из программы в атрибут "Комментарий"
Booster
Junior Member / Новичок
Участник № / Member № 6801
отправлено / posted
Пытаюсь из st-программы передать символьную строку в MySQL при помощи атрибута "Комментарий" числового канала.
В программе есть аргумент типа OUT, привязанный к 80 атрибуту числового канала. К этому же атрибуту привязан и аргумент канала Call.SQL. В программе присваиваю этому аргументу нужное значение, далее выполняется SQL-запрос, однако в БД передаётся пустая строка.
Замечу, что при принудительном задании 80 атрибута через панель МРВ строка корректно передаётся в БД. Что я делаю не так?
Сообщения / Posts 12 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Booster
Junior Member / Новичок
Участник № / Member № 6801
Booster
Junior Member / Новичок
Участник № / Member № 6801
отправлено / posted
Сейчас проверил: при передаче в 80 атрибут текста через ГЭ "Текст" с экрана - всё работает, текст передаётся в БД. Почему задать 80 атрибут через ввод с экрана можно, а из программы - нельзя?
Сообщения / Posts 12 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
В редакторе программ в режиме эмуляции Вы проверяли? Выходному аргументу программы присваивается ожидаемая строка?
Сообщения / Posts 17322 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Booster
Junior Member / Новичок
Участник № / Member № 6801
отправлено / posted
Создал отдельную программу, которая только присваивает текстовые значения 80 атрибутам разных каналов через выходные аргументы STRING. Результаты получились такие: пока количесвто выходных аргументов SRING не превышает 14, все значения корректно присваиваются этим аргументам. Как только выходных аргументов STRING становится больше 14, ни одному аргументу значение не присваивается. Попробуйте воспроизвести ситуацию.
Сообщения / Posts 12 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Количество аргументов в программе ограничено: "Количество аргументов канала вызова программы ограничено; в случае 4-байтовых аргументов – 1024 (т.е. под все аргументы не может быть выделено памяти больше, чем 4k – см. Определение переменных и констант ). " (см."Выполнение программы в реальном времени"). В разделе "Определение переменных и констант" указано: "STRING (WCHAR*) – 256 символов в кодировке utf-8". Поэтому количество строковых аргументов в программе ограничено.
Сообщения / Posts 17322 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Booster
Junior Member / Новичок
Участник № / Member № 6801
отправлено / posted
Спасибо за пояснение. А как можно узнать суммарный объём памяти, который занимают аргументы программы? Кроме как сидеть вручную умножать.
Сообщения / Posts 12 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Кроме аргументов типа STRING и LREAL все остальные аргументы программы занимают в памяти 4 байта. Т.о., при известном количестве аргументов оценить используемый объем памяти не составляет труда.
Сообщения / Posts 17322 | Из / From: Россия
| IP / IP: IP адрес / IP address |