1 (изменено: Apache, 2011-07-20 14:15:31)

Тема: AHK: Поиск по строке

Всем привет. Дорогие читатели: Надеюсь на вашу помощь. У меня есть несколько вопросов:
1.

IniRead, msg1, Settings.ini, biblioteka, %keylog%
MsgBox %msg1%

Сделал код, которые считает все строки с текстового файла и вставляет эту цифру в FileReadLine. Оператор читает последнюю строку и сравнивает и Settings.ini (Есть ли такой параметр)
Так вот, допустим, что в текстовый файл поступила строка:

[12:17:05] * Ivan_Ivanov[222] сказал: Дайте денег пожалуйста

Так вот, содержание ини файла:

[Param]
Chat=*****
[biblioteka]
Дайте денег=Запрещено правилами сервера
Привет=Привет
Как дела?=Хорошо, сам как?

и т.д.
Так вот, как сделать так, что бы FileReadLine искал определенные выражения, а не всю строку.
2 вопрос: Иногда лог оставляет после последней строки "Ентер" (т.е. пустую строчку)
Как правильно из OutputVar вычесть 1 (Желательно с примером) Читал про EnvSub, но не могу понять - в какой переменной выходит ответ?
3 вопрос: Есть ли еще какие-нибудь книги/сайты с русским самоучителем или просто со спсиком операторов и прочего.

Skype: darya281293
(Не обращайте внимания на логин)

2 (изменено: Grey, 2011-07-21 12:39:20)

Re: AHK: Поиск по строке

Apache пишет:

...как сделать так, что бы FileReadLine искал определенные выражения, а не всю строку.

Не обязательно именно этой командой делать поиск. Файл-лог, с содержимым к примеру такого плана:

[12:17:05] * Ivan_Ivanov[222] сказал: Дайте денег пожалуйста

[12:19:05] * Peter_Petrov[210] сказал: Привет, для тебя у меня их нет!

[12:20:25] * Ivan_Ivanov[222] сказал: Спасибо добр-человек, ну а у самого-то как дела?
[12:20:53] * Peter_Petrov[210] сказал: Да жирую поманеньку...

сохраняем под именем test.log в папке скрипта.

IfNotExist, %A_ScriptDir%\test.log
   {
      MsgBox,,, Искомого файла нет, 1
      ExitApp
   }
StringCaseSense, Locale
FindWords := "дайте денег,привет,как дела?" ; переменная-фильтр
Loop, Read, %A_ScriptDir%\test.log
   {
      If !A_LoopReadLine
         {
            EmptyString := % A_Index
            CountEmptyStringNum .= ", "EmptyString
            CountEmptyString++
            MsgBox, 4,, % "Читение строки: "A_Index
                      . "`nСодержание: это пустая строка`n`nПродолжить?", 2
         }
      Else
         MsgBox, 4,, % "Читение строки: "A_Index
                   . "`nСодержание: "A_LoopReadLine "`n`nПродолжить?", 2
      IfMsgBox, No
         Return
   }
Loop, Parse, FindWords, `, ; поиск слова из чила слов в переменной-фильтре
   {
      FileRead, OutPutVar, %A_ScriptDir%\test.log
      IfInString, OutPutVar, % A_LoopField
         {
            CurrentWord := % A_LoopField
            FoundWords .= ", "CurrentWord
            FoundWordsNum++
         }
   }
StringTrimLeft, FoundWords2, FoundWords, 1 ; обрезка ненужной запятой
StringTrimLeft, CountEmptyStringNum2, CountEmptyStringNum, 1 ; тоже самое
If !CurrentWord
   MsgBox,,, Слова из переменной-фильтра не найдены, 2
Else
   MsgBox,,, % "Из переменной-фильтра`n`nнайдено: "FoundWords2
                                    . "`nколичество: "FoundWordsNum, 3
If !EmptyString
   MsgBox,,, Пустых строк не обнаружено, 2
Else
   MsgBox,,, % "Имеются пустые строки`n`nномер: "CountEmptyStringNum2
                                    . "`nколичество: "CountEmptyString, 3
ExitApp

3

Re: AHK: Поиск по строке

Благодарю, Gray. Осталось еще 2 вопроса.

Skype: darya281293
(Не обращайте внимания на логин)

4

Re: AHK: Поиск по строке

Apache пишет:

...как сделать так, что бы FileReadLine искал определенные выражения...
Иногда лог оставляет после последней строки "Ентер" (т.е. пустую строчку)...

В моём примере выражения/пустые строки скрипт находит,

Apache пишет:

Как правильно из OutputVar вычесть 1...

не понятен вопрос,

Apache пишет:

Есть ли еще какие-нибудь книги/сайты с русским самоучителем...

не знаю.