Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка DELPHI.DOC
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
2.73 Mб
Скачать

Вариантный тип данных

Этот тип данных объявляется с помощью ключевого слова Variant. Данные типа Variant представляют собой такие величины, тип которых либо неизвестен к началу работы программы, либо может изменяться в процессе её выполнения. Они являются довольно гибким средством, но требуют дополнительной памяти и работа с ними происходит медленнее, чем с другими типами. Поэтому использовать их следует только там, где это необходимо, например, при работе с OLE-объектами, программировании серверов и т.д.

Одна переменная вариантного типа может принимать значения различных типов, например объявлено:

Var V: Variant; D: Double; S: String; W: Word;

Можно записать: D:= 6.88; V:= D; W:= 50;

V:= W; S:=’НИ РХТУ’; V:= S;

Вариантный тип данных представляет собой запись и определён в модуле System стандартным типом TVarData:

TvarData = record

Vtype:word;

Reserved1, Reserved2, Reserved3:word;

Case Integer of

VarSmallint: (VSmallint:Smallint);

VarInteger: (VInteger: Integer);

VarSingle: (VSingle: Single);

VarDouble: (VDouble: Double):

VarCurrency: (VCurrency: Currency);

VarDate: (VDate:Double);

VarOleStr: (VOleStr:PWideChar);

VarDispath: (VDispath:Pointer);

VarError: (VError:Integer);

VarBoolean: (VBoolean:WordBool);

VarUnknown: (VUnknown:Pointer);

VarByte: (VByte:Byte);

VarString: (VString:Pointer);

VarAny: (VAny:Pointer);

VarArray: (VArray:PVarArray);

VarByRef: (VPointer:Pointer);

End;

Этот тип представляет собой запись с вариантной частью. Поле VType определяет конкретный текущий тип записываемого значения. Само значение записывается в вариантной части записи. Три поля Reserved-1-2-3 не используются. Case-константы, определяющие вариантную часть, описаны в модуле System.

Имеется большое количество стандартных подпрограмм, которые позволяют во многих случаях избегать непосредственного обращения к внутренней структуре переменных вариантного типа.

Какие-либо параметры вариантного типа могут быть определённого типа, неназначенные и неизвестные. Неназначенный параметр – это параметр, которому не назначено ещё никакого значения. При своём создании параметр вариантного типа объявляется как неназначенный и получает значение VarEmpty, где VarEmpty – константа, определённая в модуле System. Неизвестные параметры, как правило, являются ошибочными параметрами.

В общем случае, переменные вариантного типа могут участвовать в выражениях, как и переменные других типов. Этот тип данных может представлять собой массив, в том числе, массив, состоящий из элементов вариантного типа. Для работы с такими массивами имеются стандартные подпрограммы.

Процедуры и функции

Обычно программа составляется так, что она состоит из блоков, которые строятся в какой-то степени произвольно. К крупным блокам относятся модули (Unit), библиотеки (DLL). К мелким блокам относятся подпрограммы, которые являются составной частью любых программных единиц. Подпрограмма выполняет некоторую логически завершенную последовательность действий. Существуют две разновидности подпрограмм, которые отличаются в оформлении и способе передачи данных. Это - процедуры и функции. Подпрограммы являются программными элементами, такими же, как и переменные, константы и т.д. Поэтому подпрограмма должна быть объявлена и определена до первого её использования. Существуют предопределенные встроенные подпрограммы, которые содержатся в программных модулях и библиотеках. Подпрограммы может создавать и сам программист.

При разработке подпрограммы важным является вопрос категорий используемых аргументов. Дело в том, что внутри подпрограммы все данные и вычисления локализованы, т.е. они недоступны (если не позаботиться об этом) для основной программы. Обмен результатами расчетов производится с помощью параметров (аргументов). Существует два вида параметров:

  • входные параметры, с помощью которых данные передаются внутрь подпрограммы;

  • выходные, с помощью которых передаются результаты расчета.

Обмениваться данными с подпрограммой можно с помощью глобальных переменных (не рекомендуется). В этой связи различают:

  • локальные переменные, объявленные внутри подпрограммы и доступны только ей;

  • глобальные переменные, объявленные в блоках, к которым принадлежит данная подпрограмма, и доступны как охватывающему подрограмму блоку, так и подпрограмме;

  • формальные параметры, которые записываются в круглых скобках справа от имени подпрограммы при ее объявлении и доступны как использующей подпрограмму программной единице, так и, естественно, подпрограмме.

Способ обмена данными с помощью глобальных переменных применяется только в простейших программах или каких-то блоках. Универсальным способом обмена данными является способ использования формальных параметров, который и разработан для этих целей.