Два специальных значения поля VType вариантов заслуживают отдельного обсуж дения. Первое — varEmpty (вариант пуст или неопределен) — означает, что варианту пока не назначено никакого значения. Это начальное значение варианта, которое компилятор устанавливает при входе переменной в область видимости. Второе зна чение — varNull (вариант содержит ничто) — отличается от varEmpty тем, что оно представляет реально существующее значение переменной, которое равно Null. Это отличие особенно важно при работе с базами данных, где отсутствие значения и зна чение Null — абсолютно разные вещи. Более подробная информация о применении вариантов в контексте приложений для работы с базами данных приведена в части III, “Разработка баз данных”.
Еще одно отличие этих значений состоит в том, что любая попытка вычисления вы ражений с пустым вариантом приведет к возникновению исключения invalid variant operation (недопустимая операция с вариантом). Но при использовании выражения ва рианта со значением Null этого не произойдет, поскольку результат вычисления любо го выражения, в состав которого входит значение Null, всегда будет равен Null.
Если необходимо присвоить или сравнить вариант с одним из таких значений, то
используется один из двух предопределенных в модуле System специальных вариан тов — Unassigned и Null, у которых поля VType соответственно имеют значения varEmpty и varNull.
CОВЕТ
За все в этой жизни приходится расплачиваться, и варианты — не исключение. Удоб- ство работы и высокая гибкость достигаются ценой увеличения размера и замедления работы приложения. Кроме того, повышается сложность сопровождения создаваемого программного обеспечения. Естественно, бывают ситуации, когда без вариантов труд- но обойтись. В частности, благодаря их гибкости, они достаточно широко применяются в визуальных компонентах, особенно в элементах управления ActiveX и компонентах для работы с базами данных. Тем не менее, в большинстве случаев рекомендуется работать с обычными типами данных. Старайтесь использовать варианты только в тех ситуациях, когда без них действительно нельзя обойтись и когда увеличение размера и замедление работы приложения — разумная плата за гибкость. Не забывайте, что использование неоднозначных типов данных приводит к появлению неоднозначных ошибок.
Источник: Тейксейра, Стив, Пачеко, Ксавье. Borland Delphi 6. Руководство разработчика. : Пер. с англ. — М. : Издательский дом “Вильямс”, 2002. — 1120 с. : ил. — Парал. тит. англ.