Тема: Некорректно работает цикл
Здравствуйте. Задумал сделать чат. Пока додумался до вот такого варианта:
Отправка реплики: формирую get-запрос на сервер, где он ловится php скриптом и записывается в файл.
Получение реплики: скачиваю непрерывным циклом файл (как бы меня хостинг не забанил...) и вытаскиваю строку.
Но есть две проблемы:
Во-первых, что-то странное у меня с этим циклом. Дальше первого if (varn1 > %thour%) просто не идёт. И никак я не могу понять почему. Или глаз замылился и я чего-то не вижу, или в корне всё не верно.
Во-вторых, подскажите, а как сделать получение не только последней строки? Ведь за время 1100 мск может появиться несколько реплик.
Две темы создавать не стал, ибо оба вопроса связаны с одним кодом, который, вероятно, придётся в итоге полностью переписать.
Альт+1 - отправка тестовой реплики.
Альт+2 - попытка получить реплику.
!1:: ; получаем время старта скрипта по UTC, разбиваем на переменные и отправляем реплику
UTC = %A_NowUTC%
RegExMatch(UTC, "^20(..)(..)(..)(..)(..)(..)$", UTCp)
url = http://
HTTPRequest(url)
Return
!2::
UTC = %A_NowUTC% ; получаем начальное время (время старта скрипта) по UTC
RegExMatch(UTC, "^20(..)(..)(..)(..)(..)(..)$", UTCp) ; разбиваем полученное время по UTC на переменные
tyear = %UTCp1%
tmonth = %UTCp2%
tday = %UTCp3%
thour = %UTCp4%
tminut = %UTCp5%
tsecund = %UTCp6%
Loop
{
UrlDownloadToFile, http://
RegExMatch(Chat, "s).*16\-..\-..\s(..)\-(..)\-(..)\:\s(.*?_.*?)\:\s(.*)", varn) ; скачиваем и парсим "чат"
if (varn1 > %thour%) ; если час последней строки больше времени часа старта скрипта, выводим реплику
{
msgbox, Реплика: %varn6%
thour = %varn1% ; и присваиваем всем переменным времени новое значение (время последней реплики)
tminut = %varn2%
tsecund = %varn3%
}
else
{
if (varn1 = %thour%) ; если час последней строки равен реальному часу по времени...
{
if (varn2 > %tminut%) ; ... проверяем минуты. Если в чате значение больше, обновляем переменные времени и выводим реплику
{
msgbox, Реплика: %varn6%
thour = %varn1%
tminut = %varn2%
tsecund = %varn3%
}
if (varn2 = %tminut%) ; если минута последней строки равна реальной минуте...
{
if (varn3 > %tsecund%) ; ...проверяем секунды. Если в чате секунды больше, обновляем переменные времени
{
Msgbox, Реплика: %varn6% ;
thour = %varn1%
tminut = %varn2%
tsecund = %varn3%
}
}
}
}
Sleep, 1100 ; Спим больше 1 сек
}
Return
!3::
Reload