Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Указатели. Переменным типа вариант нельзя присвоить значение обычного статического массива




Массивы типа Variant

Переменным типа вариант нельзя присвоить значение обычного статического массива. Для этого существуют функции VarArrayCreate, VarArrayOf:

VarArrayCreate (const Bound: array of Integer,VarType: <тип>): Variant;

Bound - массив пар целых чисел, каждая пара определяет нижнее и верхнее значение индекса одной размерности массива.

VarType - тип массива, равный константам с результатом работы функции VarType (п.1.1.6), кроме VarString, varArray, varRef.

Пример создания массива типа Variant из 6 целых чисел:

Var V: Variant; //объявление переменной типа Variant

V:=VarArrayCreate([0,5], varInteger); //создание массива

Пример создания массива типа Variant из 3 значений типа Variant:

Var M: Variant; //объявление переменной типа Variant

M:=VarArrayCreate([0,2], varVariant); //создание массива

M[0]:=’Иванов И.И.’; M[1]:=’04.05.70’; M[2]:=True; //присвоение значений

VarArrayOf (const Values: array of Variant): Variant;

Values - массив задает число и значения элементов в создаваемом массиве.

Пример. Продолжим предыдущий пример и создадим одномерный массив M[2] из четырех значений: 1,’Факт’, 12, 13:

M[2]:=VarArrayOf([1,'Факт',12,13]); //создание массива M[2] из 4 элементов Label3.caption:=m[2][2]; //вывод третьего значения 12 в метку Label3

Рассмотрим и другие полезные функции (п. 3.8).

VarArray Low/High Bound(x:Variant,N) ‑ возвращает нижнюю/верхнюю границу аргумента.

VarIsArray(x:Variant) ‑ возвращает True, если аргумент является массивом типа Variant.

VarIsNull(x:Variant) ‑ возвращает True, если аргумент равен Null (пустой).

Указатель ‑ переменная, которая содержит значение адреса неко­торой другой переменной, структуры или объекта.

Типизированный указатель объявляется следующим образам:

Type < имя типа указателя> = ^ < идентификатор типа данных>;

Var <имя переменной ‑ указателя: <имя типа указателя>; или

Var <имя переменной ‑ указателя: ^ <идентификатор типа данных>.

При объявлении вместо ^<типа указателя> можно использовать специально определенные для указателей типы:

Pointer - нетипизированный указатель, который может указывать на данные любого типа (Var b: Pointer).

PAnsiString, PString - указатель на данные типа AnsiString (Var s: Pstring).

PCurrency (Currency), PExtended (Extended), POleVariant (OleVariant), PShortString (ShortString), PTextBuf (TextBuf), PVarRec (VarRec), PVariant (Variant), PwideString (WideString).

PbyteArray( ByteArray) и PwordArray (TwordArray) для доступа к динамически размещаемым массивам.

При объявлении указателя ему присваивается значение именованной константы Nil, которая является признаком того, что указатель ни на что не указывает. Над указателем можно делать только операции сравнения на равенство и неравенство.

Если в выражении символ «^» находится справа от указателя, то это ‑ опе­­­рация разадресации: берется значение по этому адресу.

Запись вида @ <переменная>или Addr (<переменная>) означает взятие адреса указанной переменной.

Пример:

Type tu = PInteger; //объявление типа указателя, можно и TU=^Integer

Var a: tu; z1, z2: Integer; //объявление указателя A и переменных

Begin z1:=100; a:=Addr(z1); // можно A:=@Z1, адрес Z1 помещается в A

z2:=a^; //z2:=z1, т.е. z2=100.

End;

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




Поделиться с друзьями:


Дата добавления: 2014-12-08; Просмотров: 367; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.