| Lexua 
 
  
 Silver Member
 | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Zloy_Gelud
 Ну как всегда изящно
  У меня с учетом того, что мне нужно выгребать реализовано так 
 Код:
 | PrefixTable = {"ACPI\\", "PCI\\", "HDAUDIO\\", "USB\\", "HID\\", "PCMCIA\\", "USBPRINT\\", "LPTENUM\\", "SERENUM\\", "DOT4PRT\\", "DOT4USB\\", "DOT4\\"}; for index, prefix in pairs(PrefixTable) do
 prefixLen = String.Length(prefix);
 nStart = 1;
 fndPrefix = 0;
 while fndPrefix ~= -1 do
 if index == 1 and nStart == 1 then
 fndPrefix = String.Find(strHWIDS, prefix, nStart, false);
 else
 fndPrefix = String.Find(strHWIDS, "\n"..prefix, nStart, false);
 end
 nStart = fndPrefix + prefixLen;
 endFullHW = String.Find(strHWIDS, "\\", nStart + 1, false);
 strlen = endFullHW - fndPrefix;
 TextFile.WriteFromString("C:\\result.tmp", String.Mid(strHWIDS, fndPrefix, strlen), true);
 end
 end
 | 
 
 Но только это далеко, не все, что нужно.
 
 
 
 Цитата:
 | PCI\VEN_11AB&DEV_4363&SUBSYS_110F1734&REV_14\4&2473BB23&0&00E1 Name: Marvell Yukon 88E8055 PCI-E Gigabit Ethernet Controller
 Hardware IDs:
 PCI\VEN_11AB&DEV_4363&SUBSYS_110F1734&REV_14
 PCI\VEN_11AB&DEV_4363&SUBSYS_110F1734
 PCI\VEN_11AB&DEV_4363&CC_020000
 PCI\VEN_11AB&DEV_4363&CC_0200
 Compatible IDs:
 PCI\VEN_11AB&DEV_4363&REV_14
 PCI\VEN_11AB&DEV_4363
 PCI\VEN_11AB&CC_020000
 PCI\VEN_11AB&CC_0200
 PCI\VEN_11AB
 PCI\CC_020000
 PCI\CC_0200
 PCI\VEN_8086&DEV_2448&SUBSYS_00000000&REV_F3\3&61AAA01&0&F0
 Name: Intel(R) 82801 PCI     Hardware IDs:
 PCI\VEN_8086&DEV_2448&SUBSYS_00000000&REV_F3
 PCI\VEN_8086&DEV_2448&SUBSYS_00000000
 PCI\VEN_8086&DEV_2448&REV_F3
 PCI\VEN_8086&DEV_2448
 PCI\VEN_8086&DEV_2448&CC_060401
 PCI\VEN_8086&DEV_2448&CC_0604
 Compatible IDs:
 PCI\VEN_8086&CC_060401
 PCI\VEN_8086&CC_0604
 PCI\VEN_8086
 PCI\CC_060401
 PCI\CC_0604
 | 
 Жирным выделено то, что нужно выгребать из одной секции. И самое главное, чтоб из этой, а не следующей. Но это только pci. А есть и другие и формат их может отличаться и выгребаемые данные. Вообще-то у меня уже накорябан код, и он исправно выгребает все, что нужно, но он далек от совершенства и выполняется около пяти сек на моем компе. А хочется чтоб работало быстрее. Чисто субъективно поиск в строке происходит несколько быстрее чем в таблице, хотя может я и не прав. Вот я и взялся переписывать парсер. Ладно, буду ковыряться. С таблицей конечно проще.
   |