19:14 Типы данных(часть 3) |
Всемогущий Variant Когда на этапе проектирования
программы мы не можем четко определить тип данных определенной
переменной, можно воспользоваться очень мощ- ным типом Variant. Этот
тип вводился для поддержки OLE (Object Link and Embedding, или внедрение
и связь объектов, — мы будем рассматривать эту технологию позже), где
используется почти на каждом шагу. Но сейчас мы можем найти и другое применение
этому типу данных. Переменные этого типа могут принимать любые
значения. Вы присваиваете что угодно, а программа сама определяет
ее тип на этапе выполнения. Давайте рассмот- рим следующий пример. var V: Variant; begin V:=5; V:='Это текст'; V :=true; V :=3.14; end; В первой строке содержимое
переменной v будет восприниматься как целое число. Во второй строке
как текст. Далее будет логическая переменная, и в последней строке мы превращаем
переменную v в число с плавающей точ- кой. Таким образом, при
выполнении этого кода переменная изменит свой тип четыре раза, и код
выполнится корректно. Когда программа встречает
переменную типа variant, она автоматически выделяет для нее память
в зависимости от хранимого значения. Если значе- ние не указано, то переменная
инициализируется нулевыми значениями. ( Совет ) Старайтесь использовать этот тип только
там, где это действительно необхо- димо. Не надо все переменные объявлять как
Variant только потому, что это можно. Отлаживать такие приложения сложно,
и когда вы попытаетесь, напри- мер, сложить переменную типа Variant, содержащую
число, со строкой, мо- жете получить не тот результат, который
ожидали. Поэтому старайтесь указы- вать реальные типы. Рассмотрим следующий программный
код. var V1,V2,V3 : variant; begin VI: ='7' ; V2:='2'; V3:=100; V1:=V1+V2+V3; end; Как вы думаете, какой
результат будет в переменной vi? На первый взгляд, должно быть число 109,
если программа попытается сложить все как числа, или строка "72100",
если сложит как строку. А реально будет 172, потому что сначала будет сложение
строк "7" и "2", в результате чего получиться 72, а потом произойдет сложение чисел 72 и 100. |
|
Всего комментариев: 0 | |