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) компилятор проигнорирует варианты пока явно не встретит их в выражении.