substr() и конец строки
Интерпретатор не проверяет длину строки при исполнении функции substr()
А = substr("01234",10,5)
Ошибка на самом деле отнюдь не безобидная. Кроме неправильной работы портфеля в какой-то момент мы можем получить ошибку адресации и аварийное закрытие терминала QUIK.
По ощущениям, исправлять эту ошибку компания ARQA Technologies не собирается. Лечится предварительной проверкой длины строки функцией len().
PORTFOLIO_EX SUBSTR_error;
DESCRIPTION SUBSTR_error;
CLIENTS_LIST ALL_CLIENTS;
FIRMS_LIST ALL_FIRMS;
USE_CASE_SENSITIVE_CONSTANTS;
PROGRAM
nachalo=-2
dlina=4
itog=SUBSTR("stroka",nachalo,dlina)
WRITELN("c:text.txt", itog)
OUTPUT=CREATE_MAP()
OUTPUT=SET_VALUE(OUTPUT,"itog",itog)
DELETE_ALL_ITEMS()
ADD_ITEM(1,OUTPUT)
END_PROGRAM
PARAMETER itog;
PARAMETER_TITLE itog;
PARAMETER_DESCRIPTION itog;
PARAMETER_TYPE string(10);
END
END_PORTFOLIO_EX
Портфель работает
RSS лента комментариев этой записи