Добрый день!
Есть ли метод для перебора слов в txt файле и сравнение с заданным выражением?
Отправлено 18 февраля 2015 - 10:31
Добрый день!
Есть ли метод для перебора слов в txt файле и сравнение с заданным выражением?
Отправлено 18 февраля 2015 - 10:44
работа с файлами http://support.smart...warticle/60211/
для выделения слов можно регулярки http://support.smart...warticle/55518/
Отправлено 18 февраля 2015 - 12:01
Найти текст в файле:
// JScript var strFileName = "C:\\MyFile.txt"; var strText = "lorem ipsum"; var strFileContents = aqFile.ReadWholeTextFile(strFileName, aqFile.ctANSI); if (aqString.Find(strFileContents, strText, 0, false /* игнорируем регистр букв */) >= 0) // нашли else // не нашли
Найти regex в файле:
// JScript var strFileName = "C:\\MyFile.txt"; var strRegex = "\\d+"; // Вместо \d пишем \\d, потому что здесь не regex literal, а строка; а в JS-строках слеши надо дублировать var strFileContents = aqFile.ReadWholeTextFile(strFileName, aqFile.ctANSI); if (aqString.StrMatches(strRegex, strFileContents)) // нашли else // не нашли
Отправлено 18 февраля 2015 - 12:36
я вот так делаю и вылетает ошибка: Не соответствие типа
function TestService() { TestedApps["cmd"]["Run"](); Aliases["cmd"]["wndConsoleWindowClass"]["Keys"]("net start>D:\\srv.txt[Enter]"); var filename, strtext; strText = "Service"; filename = aqFile.OpenTextFile("D:\\srv.txt", aqFile.faRead, aqFile.ctANSI); while (!filename["IsEndOfFile"]()) if (aqString["Find"](filename, strtext,0,false)) Log["Message"]("Service is enabled") }
Отправлено 18 февраля 2015 - 12:52
на какой строчке несоответствие типа?
обычно эта ошибка возникает, когда мы работаем с массивом как с обычной строкой, например.
Отправлено 18 февраля 2015 - 13:01
if (aqString.Find(strFileContents, strText, 0, false /* игнорируем регистр букв */) >= 0) здесь >=0 это подразумивает что найденное выражение должно быть >=0?
Отправлено 18 февраля 2015 - 13:13
Я вот так решил, плюс сделал проверку на выбор 2 сервисов
function TestService() { var file = "D:\\srv.txt"; var string = "Service"; var string2 = "Service2"; TestedApps["cmd"]["Run"](); Aliases["cmd"]["wndConsoleWindowClass"]["Keys"]("net start>D:\\srv.txt[Enter]"); var s = aqFile.ReadWholeTextFile(file, aqFile.ctANSI) if (aqString.Find(s, string | string2, 0, false) >= 0) Log["Message"]("Find"); else Log["Message"]("Empty"); TestedApps["cmd"]["Close"](); }
Всем спасибо за помощь!
Отправлено 18 февраля 2015 - 13:28
Вы бы лучше сразу сказали, что надо проверить статус сервиса. В TestComplete для этого есть встроенный метод WMI.GetServiceState:
if (WMI.GetServiceState("Themes") == "Running") // запущен else // не запущен
Отправлено 18 февраля 2015 - 13:39
Спасибо! Но тот метод мне тоже пригодиться, мне нужно делать вычитку из лога - "типа успешно запущена служба или нет"
Отправлено 18 февраля 2015 - 15:08
Кстати:
if (aqString.Find(s, string | string2, 0, false) >= 0)
"string | string2" не будет работать; bitwise OR для строк не имеет смысла.
Если надо найти несколько строк, надо делать Find несколько раз:
if (aqString.Find(s, string, 0, false) >= 0) ... if (aqString.Find(s, string2, 0, false) >= 0) ...
Отправлено 19 февраля 2015 - 06:04
Принял! благодарю за подсказку
0 пользователей, 0 гостей, 0 анонимных