Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ida.final.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
6 Mб
Скачать

Char GetFirstHashKey(long id);

Функция возвращает индекс первого элемента ассоциативного массива. Поскольку ассоциативные массивы индексируются строковыми значениями, то привычные для нас способы обращения к элементам не подходят.

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

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

auto a;

DeleteArray(GetArrayId("MyArray"));

a=CreateArray("MyArray");

SetHashLong(a,"Ivanov",0x66);

SetHashLong(a,"Cheputilo",0x77);

SetHashLong(a,"Alushta",0x67);

Message("%s \n",

GetFirstHashKey(a)

);

DeleteArray(a);

Alushta

Операнд

Пояснения

id

Идентификатор массива

Return

==return

Пояснения

!=””

Индекс первого элемента массива

==””

Ошибка

Char GetLastHashKey(long id);

Функция возвращает индекс последнего элемента ассоциативного массива. Поскольку ассоциативные массивы индексируются строковыми значениями, то привычные для нас способы обращения к элементам не подходят.

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

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

auto a;

DeleteArray(GetArrayId("MyArray"));

a=CreateArray("MyArray");

SetHashLong(a,"Ivanov",0x66);

SetHashLong(a,"Cheputilo",0x77);

SetHashLong(a,"Alushta",0x67);

Message("%s \n",

GetLastHashKey(a)

);

DeleteArray(a);

Ivanov

Операнд

Пояснения

id

Идентификатор массива

Return

==return

Пояснения

!=””

Индекс последнего элемента массива

==””

Ошибка

Char GetNextHashKey(long id,char idx);

Функция возвращает индекс следующего элемента ассоциативного массива. Поскольку ассоциативные массивы индексируются строковыми значениями, то привычные для нас способы обращения к элементам не подходят.

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

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

Передаваемый ей текущий индекс не обязательно должен существовать в природе – функция просматривает список всех элементов и возвращает следующий в алфавитном порядке за ним.

Это дает возможность отказаться от вызовов GetFirstHashKey, поскольку GetNextHashKey(,””) будет его полным эквивалентом.

Например:

auto a,b;

b="";

DeleteArray(GetArrayId("MyArray"));

a=CreateArray("MyArray");

SetHashLong(a,"Ivanov",0x66);

SetHashLong(a,"Cheputilo",0x77);

SetHashLong(a,"Alushta",0x67);

for(;;){

b=GetNextHashKey(a,b);

if (b=="") break;

Message("%s \n",b);}

DeleteArray(a);

Alushta

Cheputilo

Ivanov

Операнд

Пояснения

id

Идентификатор массива

idx

Индекс массива (строковой!)

Return

==return

Пояснения

!=””

Очередной индекс массива

==””

Ошибка

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