Добрый день!
Задача. Есть набор статических данных(меток). Фиксированное положение и не меняется. Объект выдает свое положение. Если находиться рядом с одной из меток зафиксировать сей факт(например увеличить значение переменной на 1).
Идея. Привязать координаты примитива (квадрат) на мнемосхеме к положению объекта (в масштабе) и возле каждой метки отображать сколько раз объект проехал через нее.
Теперь решение. Согласно этой теме
https://simple-scada.com/forum/index.php?topic=818.0 можно сделать массив с положением меток.
Так же есть глобальный модуль и в принципе объектов не много, метки одни и те же и можно написать одну глобальную процедуру и использовать ее для всех объектов и будущих.
Проблемы. Создаем массив в глобальном модуле:
interface
var
array_test: Array[1..3] of Single = (0, 6.8, 10.3)
Пишем процедуру в implementation. Добавляем ее в interface.
Тут
вопрос. В interface блок var как то надо заканчивать? Или после переменных можно сразу добавлять определения процедур и функций?
Итак:
procedure proverka(f_array:Array of Single; f_positionTC:TM_Variable; f_dlina_XXX:Single; f_speedTCms:TM_Variable);
Отличие: определяем массив как Array[1..3] of Single, а в процедуре Array of Single. Компиляция проходит.
Вызываем скрипт и ... получаем ошибку о не совпадении типов
'Incompatible types DYNARRAY_Single and ArrayType_1000179'. Понимаю что есть динамический в процедуре и статический в определении массива.
Эксперименты описывать не буду. В глобальном модуле не получилось.
Второй вариант определить локально в скрипте массив.
Определяем массив:
var
array_test_v1: Array of Single;
Инициализируем:
array_test_v1[1] := 0.0;
array_test_v1[2] := 6.8;
array_test_v1[3] := 10.3;
Вызываем глобальную процедуру:
proverka(array_test_v1,
positionTC,
dlina_430,
speedTCms);
Компиляция проходит. Но в журнале сервера видим ошибку:
Ошибка в скрипте ... Access violation at address ... Write of address ...
Результат. Пока нету.
Можете проверить у себя. Возможно более подробно осветить тему использования массивов в процедурах и функциях глобального модуля (но вроде в руководстве не нашел)?
Возможно у Вас есть более простой вариант решения.
Жду вопросов и предложений