AVZ 5. Руководство пользователя
×

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