1 (изменено: SeaVodikendu, 2016-05-16 13:24:25)

Тема: AHK: Loop и SetTimer

Здравствуйте.
Помогите разобраться с SetTimer.
Что должно быть:
После запуска скрипта идет поиск  строки "text11" в файле.
Когда находит, переход к "Loop" с "SetTimer".
Далее, если в течении (не по прошествии) 10 секунд в файле появится строка "text22", сразу переход к "Metka3" (завершает скрипт).
Если не находит строку, переход к "Metka1" (начинает заново).

Мой вариант совсем не так работает:

#Persistent

Metka1:
Loop, read, %path%tex.txt
   {
    pred_line := last_line
    last_line := A_LoopReadLine
}
   if (last_line = "text11" or pred_line = "text11")
{     
A=1
MsgBox, Таймер вкл. Переход к Metka2
goto, Metka2
}
If !a
{
goto, Metka1
}
return

Metka2:
SetTimer, tover, 10000
F=0
Loop, read, %path%tex.txt
   {
    pred_line := last_line
    last_line := A_LoopReadLine
}
   if (last_line = "text22" or pred_line = "text22")
{     
F=1
SetTimer, tover, off
MsgBox, Таймер выкл. Переход к Metka3
goto, Metka3
}
return
tover:
MsgBox, Время вышло. Переход к Metka1
goto, Metka1
return

Metka3:
MsgBox, Ok
ExitApp
return

2 (изменено: serzh82saratov, 2016-05-16 14:11:41)

Re: AHK: Loop и SetTimer

идет поиск  строки "text11" в файле.

в файле появится строка "text22"

Loop, read, %path%tex.txt
   {
    pred_line := last_line
    last_line := A_LoopReadLine
}
   if (last_line = "text22" or pred_line = "text22")

Интересуют только 2 последние строки?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

3

Re: AHK: Loop и SetTimer

serzh82saratov
Проверка последней и предпоследней строки.
Вы хотите сказать что второй "Loop" конфликтует с "text11" из первого?

4

Re: AHK: Loop и SetTimer

Нет, я про то что почему 2 последние строки. У вас наверное речь про лог файл, и интересны просто новые добавленные данные...

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

5

Re: AHK: Loop и SetTimer

Да, именно. Но бывает лог файл добавляет строку так, что последняя оказывается пустой.

6

Re: AHK: Loop и SetTimer

последняя оказывается пустой

Это без разницы, а вот если добавит больше 2 строк между проверками файла, то можно пропустить.
В PathLog указать путь к файлу.


PathLog := A_ScriptFullPath
File := FileOpen(PathLog, "r`n"), File.Pos := File.Length

Search:
	MsgBox Search text11
	Match := 0
	While !Match
	{ 
		Loop, Parse, % File.Read(), `n 
			If (Instr(A_LoopField, "text11") && Match := 1)
				Break
		File.Pos := File.Length
		Sleep 200
	} 
	
	MsgBox Search text22
	Match := 0, Start := A_TickCount
	While !Match
	{
		If (A_TickCount - Start >= 10000)
			Break 
		Loop, Parse, % File.Read(), `n
			If (Instr(A_LoopField, "text22") && Match := 1)
				Break
		File.Pos := File.Length
		Sleep 200
	}
	If !Match
		GoTo, Search

	MsgBox ExitApp
	ExitApp
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

7 (изменено: SeaVodikendu, 2016-05-16 17:49:09)

Re: AHK: Loop и SetTimer

serzh82saratov
Ваш код у меня не работает. Бесконечный поиск после "MsgBox Search text11".
Но вы неумышленно помогли разобраться мне в "A_TickCount" и я просто присобачил его к моему коду.

8

Re: AHK: Loop и SetTimer

SeaVodikendu пишет:

Бесконечный поиск после "MsgBox Search text11".

Значит после запуска скрипта в указанный вами файл не добавляется строка с содержимым "text11".

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

9

Re: AHK: Loop и SetTimer

serzh82saratov
Не может быть. Я ведь сперва на шаблоне проверяю и в вручную сам добавляю.

10

Re: AHK: Loop и SetTimer

А я не проверяю?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

11

Re: AHK: Loop и SetTimer

Не знаю в чем вчера причина была, но сейчас буквально изменил строки какие нужно искать и ваш скрипт заработал. Спасибо.