Здравствуйте.
Создайте в проекте объект типа текст (https://simple-scada.com/help/manual/text.html), например с именем Text1 и свяжите его с вашей секундной переменной. Далее на событие OnDataChange напишите такой скрипт:
begin
Text1.Text := SecondsToStr(Text1.AsInt64);
end.
, где Text1.AsInt - значение переменной связанной с объектом Text1 в виде целого числа;
описание функции SecondsToStr смотрите здесь (https://simple-scada.com/help/script/secondstostr.html).
Второй вариант создать универсальный скрипт:
begin
if Sender is TM_Text then
with Sender as TM_Text do
Text := SecondsToStr(AsInt64);
end.
Такой универсальный скрипт можно назначить на событие OnDataChange разных объектов Текст, каждый из которых связан со своей секундной переменой и всё будет работать (не придется писать отдельный скрипт для каждого объекта Текст, как в первом варианте).
Здравствуйте!
Я делал так:
aInt_Est - количество секунд.
Text1.Text := IntToStr((aInt_Est.Value div 3600) div 24) + ' дней ' + IntToStr((aInt_Est.Value div 3600) mod 24) + 'часов ' + IntToStr((aInt_Est.Value mod 3600) div 60) + 'минут';
Если количество часов превысит 99, то они отобразятся? (т.е. 200 или 1200 часов..)
Да, отобразятся.
Можно-ли все перевести в формат дни\часы\минуты\сек?
Да, для этого можно использовать пример который предложили участники форума выше, либо воспользоваться функцией SecondsToDateTime, изменённые примеры ниже.
Обычный скрипт:
var
aDT: TDateTime;
begin
aDT := SecondsToDateTime(Text1.AsInt64);
Text1.Text := IntToStr(DaysBetween(aDT, 0)) + ' дней, ' + TimeToStr(aDT);
end.
Универсальный скрипт для любых объектов Текст (https://simple-scada.com/help/manual/text.html):
var
aDT: TDateTime;
begin
if Sender is TM_Text then
with Sender as TM_Text do
begin
aDT := SecondsToDateTime(AsInt64);
Text := IntToStr(DaysBetween(aDT, 0)) + ' дней, ' + TimeToStr(aDT);
end;
end.