function SC_SearchItem

function SC_SearchItem

Previous pageReturn to chapter overviewNext page

function SC_SearchItem(AName, AVal : string; AFullComp : boolean) : integer;

 

Поиск элемента по его значению. Выполняет поиск в текущем теге базы XML, обрабатываются значения параметров с именем AName, AVal - сравнение не чувствительно к регистру. AFullComp - параметр, управляющий режимом сравнения. Если он равен TRUE, то выполняется полное сравнение образца и значения параметра с именем AName, если он равен FALSE, то ищется вхождение AVal в значениях параметра с именем AName.

 

В случае успешного поиска функция возвращает индекс первой найденной записи, в случае отсутствия совпадений или ошибки - значение "-1".

 

На заметку: Данная функция предназначена для простейшего поиска. Для более сложного поиска (по нескольким параметрам и т.п.) следует организовать цикл от 0 до SC_GetItemsCount-1 и в нем проверять любые условия, получая значения параметров через SC_GetItem. Однако в случае, если поиск возможен через SC_SearchItem, то следует применять именно его, т.к. поиск через SC_SearchItem работает на порядок быстрее, чем аналогичный ему перебор элементов в цикле.

 

Совместимость: AVZ 4.28 и выше

 

 

Пример:

 

var

Res : boolean;

i       : integer;

begin

Res := SC_INIT(GetAVZDirectory + 'LOG\avz_sysinfo.xml');

if Res then

 AddToLog('Загрузка и парсинг протокола выполнены успешно')

else begin

 AddToLog('Ошибка загрузки и парсинга протокола');

 exit;

end;

if SC_SelectNode('AVZ\KERNELOBJ') then

 AddToLog('Тег KERNELOBJ найден')

else begin

 AddToLog('Тег KERNELOBJ не найден');

 exit;

end;

// Запрос количества вложенных тегов

AddToLog('SC_GetItemsCount = '+inttostr(SC_GetItemsCount));

// Поиск тега

 i := SC_SearchItem('File', 'AnyDVD', false);

if i >= 0 then

  AddToLog('Найден драйвер AnyDVD - ['+inttostr(i)+'] File= "'+SC_GetParamVal(i, 'File', '')+'"');

end.