16.40.7. function SC_SearchItem
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.
В примере использовались: AddToLog, GetAVZDirectory, SC_GetItemsCount, SC_GetParamVal, SC_INIT, SC_SearchItem, SC_SelectNode