3.7.2 Вариантные переменные в присвоениях и выражениях |
Вверх Предыдущий Следующий |
Как видно из определения выше, большинство простых типов могут быть присвоены вариантной переменной. Точно так же вариантная переменная может быть присвоена простому типу: Если возможно, значение вариантной переменной будет преобразовано к типу который присваивается. Это может привести к ошибке: Присвоение вариантной переменной, содержащей строку, целочисленной переменной приведет к ошибке, если строка не содержит допустимое целое число. В следующем примере, первое присвоение будет работать а второе завершится ошибкой: program testv3;
uses Variants;
Var V : Variant; I : Integer; begin V:='100'; I:=V; Writeln('I : ',I); V:='Что-то другое'; I:=V; Writeln('I : ',I); end. Первое присвоение будет работать, но второе нет, поскольку 'Что-то другое' не может быть преобразовано в допустимое целочисленное значение. В результате будет сгенерировано исключение EConvertError. Результатом выражения, включающего тип variant, снова будет тип variant, но он может быть присвоен переменной другого типа - если результат может быть преобразован в переменную этого типа. Обратите внимание, что выражения, включающие варианты требуют больше времени для вычислений, и поэтому его следует использовать с осторожностью. Если нужно сделать много расчетов, то лучше избежать использования типа variant. При рассмотрении неявных преобразований типов (например, byte к integer, integer к double , char к string) компилятор проигнорирует варианты пока явно не встретит их в выражении. |