Ваши комментарии

День добрый.

Установил бесплатную версию, преверил - всё норм, работает, а вот на серверной версии СКАДА системы файл не удалается и значения дописываются дальше.

Скорей всего приложению не хватает прав на удаление файла из указанной директории.

 как победить, куда копать?

const
FileName = 'm:\test_me.txt';
i = 5;
Var
j: integer;
v:array[1..i] of extended;
str: string;
FileСontents: TStringList;
Begin
v[1]:= (ceil(10*ReadValue('Virtual channel 1')))/10;
v[2]:= (ceil(10*ReadValue('Virtual channel 2')))/10;
v[3]:= (ceil(10*ReadValue('Virtual channel 3')))/10;
v[4]:= (ceil(10*ReadValue('Virtual channel 4')))/10;

FileСontents := TStringList.Create;
try
for j := 1 to i do
begin
str := 'I;' + inttostr(j+3220) + ';' + ';' + floattostr(v[j]) + ';' + '0;';
FileСontents.Add(str);
end;
FileСontents.SaveToFile(FileName);
finally
FileСontents.Free;
end;
end.

День добрый.

Проблему локализовали, исправляем. 

Добрый вечер.

Сможете проект на почту прислать? 

Добрый вечер.

Не смогли у себя повторить такого поведения системы (какая версия СИМП установлена), давайте немного доработаем скрипт, и проверим:

var
  DTdy,DTdr: string;
...

for ryi := ry downto 0 do
begin // формирование списка DTdy := dateTimeToStr(masdy[ryi]);
DTdr := dateTimeToStr(masdr[ryi]); if masdr[ryi] = 0 then
s := '; Не вышел'
else
begin
s := DTdy + '; Всего:' +
inttoStr(round((masdy[ryi] - masdr[ryi]) * 24 * 3600)) + 'сек';
end;

ss := ss + inttoStr(ryi + 1) + ' №' + inttoStr(masvY[ryi]) + ' ' +
DTdr + '-' + s + ',';
end;

День добрый.

Штатное поведение функции DateTimeToStr - при преобразовании даты/времени в строку - если время равно 0:00:00 то будет выведена только дата.

http://www.delphibasics.ru/DateTimeToStr.php

Пришлите текст скрипта нам на почту для анализа.

Можно попробовать снизить время опроса до 500 мс для начала. Или пересмотреть логику скрипта. У Вас круглосуточное производство? Я к тому что может не сбрасывать счетчик каждый час, а сбрасывать к примеру в нерабочее время в конце смены к примеру. 

День добрый.

К сожалению из скрипта опросить напрямую устройство нет возможности.

Насколько я понимаю в таком случае список должен быть безразмерным, т.к. неизвестна продолжительность периода, а код довольно сильно раздуется.

Все верно, список будет безразмерным. Код увеличится не на много.

То есть способа решить задачу через обращение к БД нет

Почему нет. Он есть, Вы его применили. Просто надо учитывать что данные в БД сбрасываются не сразу а накапливаются в кэше (как Вы верно заметили), по этому в реальном времени "вытаскивать" значения из БД не получится. По этой причине мы и предложили как реализовать задачу другим методом, что бы Вы могли получать нужные Вам значения без задержек.

Можно модифицировать пример для подсчета и среднего. В примере используется одна переменная для фиксации максимума, для подсчёта среднего можно аккумулировать значения к примеру в списке, и далее уже по надобности из этого списка можно получить среднее. 

В примере мы фиксируем максимум, я и спросил, из чего Вы сделали вывод что мы считаем среднее? Или я Вашего вопроса не понял. Ранее Вы описали задачу как - "Для удобства анализа, хочется добавлять к нему еще и максимальное отклонение за время которое параметр провел вне допуск" 

Сервис поддержки клиентов работает на платформе UserEcho