Добрый день!
Анализируя журнал сервера наткнулся на ошибку с текстом:
Ошибка в скрипте "MinutestoHours" в строке 4. Integer overflow
Переходим к скрипту и видим 5 строк:
begin
if Sender is TM_Text then // проверяем, что Sender это текст
with Sender as TM_Text do // приводим Sender к типу "TM_Text"
Text := SecondsToStr(AsInt*60);
end.
Согласно руководству в функции SecondsToStr аргумент является:
function SecondsToStr(
ASeconds: Int64)
: string;с диапазоном из руководства
-9223372036854775808…9223372036854775807Обращаем внимание, что переменную берем как AsInt с диапазоном
-2147483648…2147483647Данный скрипт применяется много где, но:
- отрицательных значений нет ни где
- везде есть значения
- самое большое 51000
Предполагаем, что именно 51000 вызывает переполнение.
Считаем
51000 * 60 = 3 060 000 что на много меньше диапазонов всех указанных типов выше.
Можете подсказать, где закралась ошибка?