Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
delphi.pdf
Скачиваний:
191
Добавлен:
24.02.2016
Размер:
6.84 Mб
Скачать

S3 := S1 + 7; // S3 указывает на подстроку 'Pascal'

В языке Delphi существует богатый набор процедур и функций для работы с нуль-терминированными строками (см. справочник по среде Delphi).

2.19. Переменные с непостоянным типом значений

2.19.1. Тип данных Variant

В среде Delphi определен стандартный тип данных Variant, с помощью которого объявляются переменные с непостоянным типом значений. Такие переменные могут принимать значения разных типов данных в зависимости от типа выражения, в котором используются. Следующий пример хорошо демонстрирует мощь переменных с непостоянным типом значений:

program Console;

{$APPTYPE CONSOLE}

uses SysUtils;

var

V1, V2, V3, V4: Variant;

begin

:= 5;

// целое число

V1

V2

:= 0.8;

// вещественное число

V3

:= '10';

// строка

V4

:= V1 + V2 + V3;

// вещественное число 15.8

Writeln(V4);

// 15.8

Writeln('Press Enter

to exit...');

Readln;

 

end.

 

 

2.19.2. Значения переменных с типом Variant

Переменные с непостоянным типом содержат целые, вещественные, строковые, булевские значения, дату и время, массивы и др. Кроме того, переменные с типом Variant принимают два специальных значения: Unassigned и Null.

Значение Unassigned показывает, что переменная является нетронутой, т.е. переменной еще не присвоено значение. Оно автоматически устанавливается в качестве начального значения любой переменной с типом Variant.

148

Значение Null показывает, что переменная имеет неопределенное значение. Если в выражении участвует переменная со значением Null, то результат всего выражения тоже равен Null.

Переменная с типом Variant занимает в памяти 16 байт. В них хранятся текущее значение переменной (или адрес значения в динамической памяти) и тип этого значения.

Тип значения выясняется с помощью функции

VarType(const V: Variant): Integer;

Возвращаемый результат формируется из констант, перечисленных в таблице 2.10. Например, следующий условный оператор проверяет, содержит ли переменная строку (массив строк):

if VarType(V) and varTypeMask = varString then ...

Код типа

Значение

Описание

varEmpty

$0000

Переменная содержит значение Unassigned.

varNull

$0001

Переменная содержит значение Null.

varSmallint

$0002

Переменная содержит значение типа Smallint.

varInteger

$0003

Переменная содержит значение типа Integer.

varSingle

$0004

Переменная содержит значение типа Single.

varDouble

$0005

Переменная содержит значение типа Double.

varCurrency

$0006

Переменная содержит значение типа Currency.

varDate

$0007

Переменная содержит значение типа TDateTime.

varOleStr

$0008

Переменная содержит ссылку на строку формата

Unicode в динамической памяти.

 

 

varDispatch

$0009

Переменная содержит ссылку на интерфейс

IDispatch (интерфейсы рассмотрены в главе 6).

 

 

varError

$000A

Переменная содержит системный код ошибки.

varBoolean

$000B

Переменная содержит значение типа WordBool.

 

 

Элемент варьируемого массива содержит значение

varVariant

$000C

типа Variant (код varVariant используется только

 

 

в сочетании с флагом varArray).

varUnknown

$000D

Переменная содержит ссылку на интерфейс

IUnknown (интерфейсы рассмотрены в главе 6).

 

 

varShortint

$0010

Переменная содержит значение типа Shortint

varByte

$0011

Переменная содержит значение типа Byte.

varWord

$0012

Переменная содержит значение типа Word

149

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]