Здравствуйте.
Если время наработки/простоя всегда меньше 24 часов, то проще всего будет использовать для вывода компонент
Календарь и настроить его так, чтобы отображалось только время - см. свойства Стиль, Дата, Время. У календаря в свойстве "Переменная" нужно указать переменную, в которую запишется результат процедуры ArchiveTimeOn, например "MyVariableRes".
Если время наработки/простоя больше 24 часов, то можно выводить его в компонент
Текст как это описано в примере №2
по ссылке. Создавать дополнительные переменные для этого не требуется.
Если обязательно требуется записывать результаты вычислений ArchiveTimeOn в строковые переменные, то для каждого агрегата нужно создать переменные с однотипными именами, например: vrAggregate1TimeOn, vrAggregate2TimeOn и тд. Для указанных переменных нужно выбрать тип данных DateTime. В эти переменные будет записываться результат вычисления времени наработки. Аналогично, необходимо создать однотипные переменные с типом данных String, например с именами: vrAggregate1TimeOnStr, vrAggregate2TimeOnStr и тд. В эти переменные будет записываться результат вычисления времени наработки в виде строки.
Далее нужно создать скрипт с типом события "Изменились переменные", добавить в список скрипта (
как это описано в примере) переменные "vrAggregate1TimeOn", "vrAggregate2TimeOn" и т.д., после чего написать универсальный скрипт:
var
aVar: TM_Variable;
aDay, aMonth, aYear: string;
function myFormat(AVal: Integer; aSymbols: Byte): string;
begin
Result := IntToStr(AVal);
while Length(Result) < aSymbols do
Result := '0' + Result;
end;
begin
aVar := GetVariableByName(Variable.Name + 'Str'); // ищем переменную с именем "vrAggregate1TimeOn", "vrAggregate2TimeOn" и тд.
if aVar <> nil then // если переменная существует
begin
SetTimeFormat('hh:mm');
if YearOf(Variable.AsDateTime) < 2016 then
begin
aDay := myFormat(DaysBetween(Variable.AsDateTime, 0), 2) + '.';
aMonth := myFormat(MonthsBetween(Variable.AsDateTime, 0), 2) + '.';
aYear := myFormat(YearsBetween(Variable.AsDateTime, 0), 4) + ' ';
aVar.Value := aDay + aMonth + aYear + TimeToStr(Variable.AsDateTime);
end else
aVar.Value := '00.00.0000 00:00';
end;
end.
В данном скрипте с помощью функции GetVariableByName будет осуществляться поиск переменных vrAggregate1TimeOnStr, vrAggregate2TimeOnStr и т.д. по имени, после чего результат вычислений будет записываться в найденные переменные.