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

Char GetHashString(long id,char idx);

Функция возвращает значение элемента ассоциативного массива типа «строка»

Как уже говорилось выше один и тот же элемент не может содержать значения «строка» и «длинное целое» одновременно. Поэтому возникает возможность присвоить значение одного типа, а попытаться прочитать другого. Эта операция завершиться корректно и типы будут автоматически преобразованы.

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

Например:

auto a;

DeleteArray(GetArrayId("MyArray"));

a=CreateArray("MyArray");

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

Message("%s \n",

GetHashString(a,"Ivanov"));

DeleteArray(a);

Wfwf

Необходимо помнить, что IDA учитывает регистр индексов. Так “Ivanov” и “ivanov” это два разных индекса и при попытке прочитать присвоенное значение функция возвратит пустую строку.

Например:

auto a;

DeleteArray(GetArrayId("MyArray"));

a=CreateArray("MyArray");

SetHashString(a,"Ivanov",0х66);

Message("%s \n",

GetHashLong(a,"ivanov")

);

DeleteArray(a);

Возникает неоднозначность, – то ли действительно возникла ошибка, то ли такое значение имеет элемент?

В остальном же никаких проблем с использованием этой функции не возникает. Например:

auto a;

DeleteArray(GetArrayId("MyArray"));

a=CreateArray("MyArray");

SetHashString(a,"Ivanov",”Patron”);

Message("%s \n",

GetHashLong(a,"Ivanov")

);

DeleteArray(a);

Patron

Операнд

Пояснения

id

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

idx

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

Return

==return

Пояснения

!=””

Значение элемента массива

==””

Ошибка

Значение элемента массива

Success DelHashElement(long id,char idx);

Функция удаляет один элемент ассоциативного массива. Поскольку один и тот же элемент не может содержать значения «строка» и «длинное целое» одновременно, отпадает необходимость указывать теги (смотри описание функции DelArrayElement для разряженных массивов)

Необходимо помнить, что IDA учитывает регистр индексов. Так “Ivanov” и “ivanov” это два разных индекса и представляют собой два разных элемента.

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

Например:

auto a;

DeleteArray(GetArrayId("MyArray"));

a=CreateArray("MyArray");

SetHashString(a,"Ivanov",”Patron”);

Message("%s \n",

DelHashElement(a,"Ivanov")

);

DeleteArray(a);

1

Операнд

Пояснения

id

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

idx

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

Return

==return

Пояснения

==1

Операция выполнена успешно

==0

Ошибка

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