1.2.77. $V или $VARSTRINGCHECKS : Проверка Var-строки |
Вверх Предыдущий Следующий |
Директива {$VARSTRINGCHECKS } определяет, насколько строго компилятор будет проверять совместимость строковых типов для строк, переданных в подпрограмму по ссылке. Если эта директива в состоянии + или ON, то компилятор проверяет, является ли строка, переданная как параметр, точным соответствием типу параметра, объявленного в процедуре. По умолчанию компилятор предполагает, что все короткие строки являются совместимыми типами. То есть, следующий код будет компилироваться: Procedure MyProcedure(var Arg: String[10]); Типы Arg и S не являются строго совместимыми: параметр Arg- это строка длиной 10 символов, а переменная S – строка длиной 12 символов. Строка S будет усечена до 10 символов. В состоянии {$V+} этот код приведёт к ошибке компиляции: testv.pp(14,16) Error: string types doesn't match, because of $V+ mode (Ошибка: строковые типы несовместимы, потому что включен режим $V+) Учтите, что это имеет эффект только для строк, передаваемых по ссылке, а НЕ по значению. |