|
#16
|
||||
|
||||
Цитата:
application.processmessages тормозит выполнение твоего кода на определенное время за которое выполняет обработку других сообщений, например прорисовку формы. Так же твой код можно вынести в отдельный поток и тогда прорисовка формы и выполнение команд будет в основном потоке, а выполнение твоего кода в другом. |
#17
|
|||
|
|||
Цитата:
Цитата:
Application.ProcessMessages значительного эффекта не принес, с ним программа глючит жестко, то есть без него я совсем не могу ничего с окном делать, а с ней могу но это вызывает у меня еще большее раздражение, окно передвигается по экрану рывками и визуально, а может и программно программа работает медленнее. Последний раз редактировалось m1sclick, 09.07.2011 в 13:25. |
#18
|
|||
|
|||
Делай тогда в потоке это все...
|
#20
|
|||
|
|||
Жаль никто так и не ответил почему все так не любят goto?
|
#21
|
||||
|
||||
Цитата:
|
#22
|
||||
|
||||
Если Form2.CheckBox5.Checked=true
у тебя программа будет виснуть. Код:
procedure TForm1.Button1Click(Sender: TObject); label Guess; begin acc.LoadFromFile('\FireString\acc.txt') Guess: for i:=0 to acc.Count - 1 do begin Memo1.Lines.Add(''); if Form2.CheckBox2.Checked then begin ................................... end; end; acc.Free; if Form2.CheckBox5.Checked then begin Application.Restore; Timer1.Enabled:=true; Timer1.Interval:=10000; Goto Guess; end; Application.Restore; end; Смотрим. 1. если Form2.CheckBox5.Checked=true то Timer1.Enabled:=true; Timer1.Interval:=10000; Что это нам даст? Неопнятно. Типа включим таймер, и?) 2.далее попадаем в цикл for i:=0 to acc.Count - 1 do в нем 3. if Form2.CheckBox2.Checked если чекед выполняем действия с акками. А если нет, то пустой цикл))) 4. Снова к п1. Заметь таймер тут ни на что не влияет. Выходит безконечный цикл. Вывод: так не делают. В онтаймер напиши код и задай интервал таймеру соответствующий. Вот: PHP код:
Последний раз редактировалось Konrad, 09.07.2011 в 20:10. |
#23
|
|||
|
|||
Konrad, ты что то явно не так понимаешь.
Мне и нужно что бы цикл при включенном CheckBox5 работал бесконечно долго потому что в GuessHand можно играть раз в пол часа, то есть если там стоит флажок первый раз цикл выполняется полностью, после окончания происходит проверка этого условия и если оно равно true программа должна останавливаться на полчаса а после проходить путь снова но уже только с логином и GuessHand в цикле. Вроде все логично, но я уже сейчас подумываю над тем чтобы отказаться от этого перехода, а просто дописать еще часть кода потому что будет очень не удобно формировать отчет. На счет таймера, я конечно не уверен но он вроде нормально работает. Я писал после: Код:
Timer1.Enabled:=true; Timer1.Interval:=10000; И все нормально записывалось только я не уверен время ожидалось или нет. Сейчас важно разобраться в потоках что бы потом можно было в любой момент выключить программу. |
#24
|
||||
|
||||
Цитата:
А если ничего, то Timer1.Interval:=10000 ничего не значит Это тебе не слип(300) В том то и дело что интевал в пол часа ты нигде не используешь. Прога у тебя зависает постоянно. И прога не останавливается на полчаса. Если сделать через онтаймер то каждые пол часа будет авторизация. Тоесть при событий онтаймер происходит авторизация, Допустим чтото пошло не так, в проге повторяешь её 2-3 раза. После этого ждешь 30 мин. И вот те 30 мин прога ничего делать не будет и соответственно виснуть тоже И потоки тебе ни к чему, если только прога не зависает на авторизации, что врядли. П.с.: если ты уверен что все гуд, то я ничем помочь не могу. Удачи. Последний раз редактировалось Konrad, 09.07.2011 в 20:25. |
#25
|
|||
|
|||
Теперь все понял, спасибо за совет, у меня и раньше так было я просто боялся что он не вернет управление с OnTimer обратно куда надо.
Назрел новый вопрос уже по таймеру. Как сделать так что бы после первого аккаунта начинался отсчет времени? То есть когда первый раз цикл выполниться включается таймер, цикл дальше продолжается но таймер тикает, а потом когда время пройдет он снова запускал цикл. Я что то совсем запутался, этот таймер он после его включения выполняет все что записано в процедуре OnTimer? или ждет время, потом выполняет то что написано в процедуре, а потом передает управления обратно в то место откуда его вызвали? |
#26
|
||||
|
||||
Почитай FAQ по таймеру.
И еще раз, запусти код PHP код:
Интервал поставь скажем в 10000; Можно,кстати, добавить еще счетчик. Последний раз редактировалось Konrad, 09.07.2011 в 20:42. |
#27
|
|||
|
|||
Ждало максимум две секунды и то что написано в OnTimer не включалось.
Последний раз редактировалось m1sclick, 18.07.2011 в 18:42. |
#28
|
||||
|
||||
Еще раз.
Создай новый проджект. Закинь туда таймер и чекбокс. в онтаймер пропиши код. Поставь интервал 10000. И все. |
#29
|
|||
|
|||
Получается так..
Когда я включаю таймер начинается отсчет времени при этом цикл продолжает выполняться. После истечения времени происходит действие в обработчике OnTimer и через указанное ранее время оно повторяется. |
#30
|
||||
|
||||
Тяжелый случай.
У тебя icq есть? |