NamelessOne
Новичок
- Сообщения
- 1
- Репутация
- 0
Здравствуйте. Я пишу макрос для текстовой игры. Столкнулся с проблемой, которую не смог пока решить, поэтому решил обратиться сюда.
Клиент создает лог, в который, разумеется, пишутся строки. С последней строкой проблем нет, last string работает прекрасно. Но здесь интересный случай: при определенных обстоятельствах в лог пишется одновременно две строки, а последняя совпадает в обоих нужных случаях. Поэтому нужно, чтобы в одном случае читал последнюю строку, а в другом - предпоследнюю. Нужна именно предпоследняя строка. Или я торможу, что такой функции не вижу... Мануал вкуривал, тут поиском пользовался - решения не нашел. Либо я слепой, тогда простите. Дайте линк или помогите разобраться, пожалуйста. Дабы было понятнее в целом приведу небольшой кусок кода:
Целиком приводить не вижу смысла, все прекрасно работает, проблема лишь в чтении предпоследней строки - не знаю как это сделать. Заранее спасибо.
Пользуйтесь, пожалуйста, в будущем тегами AutoIt.
madmasles.
Клиент создает лог, в который, разумеется, пишутся строки. С последней строкой проблем нет, last string работает прекрасно. Но здесь интересный случай: при определенных обстоятельствах в лог пишется одновременно две строки, а последняя совпадает в обоих нужных случаях. Поэтому нужно, чтобы в одном случае читал последнюю строку, а в другом - предпоследнюю. Нужна именно предпоследняя строка. Или я торможу, что такой функции не вижу... Мануал вкуривал, тут поиском пользовался - решения не нашел. Либо я слепой, тогда простите. Дайте линк или помогите разобраться, пожалуйста. Дабы было понятнее в целом приведу небольшой кусок кода:
Код:
;...
Func MarcosLoop()
For $i = 0 To 1000 Step 1
$last_line_log = FileReadLine($log, -1)
;#Вот это и выходит предпоследней строкой, проблема в том, что в тот же момент пишется другая - следующая, которая так же как раз используется в ElseIf
;#Поэтому нужно читать предпоследнюю
If StringInStr($last_line_log, 'You must free more space.', 1) Then
ExitLoop
ElseIf StringInStr($last_line_log, 'You stopped.', 1) Then
WinActivate("x")
EndIf
Sleep(100)
Next
WinActivate("x")
EndFunc ;==>MarcosLoop
;...
Целиком приводить не вижу смысла, все прекрасно работает, проблема лишь в чтении предпоследней строки - не знаю как это сделать. Заранее спасибо.
Пользуйтесь, пожалуйста, в будущем тегами AutoIt.
madmasles.