![]() |
|
|
#1
|
|||
|
|||
![]() Решил sleep заменить на timer, что бы форма при попадание на время задержки не висла, но всё равно тот же результат
Код:
FHttp.get(('Сайт'); { Timer := TTimer.Create(self); Timer.Enabled := true; Timer.OnTimer := OnTimer; Timer1.Interval := h; при обоих случаях из потока форма зависает Sleep(h);} FHttp.get('Сайт2'); Как правельней сделать что бы форма не висла? Последний раз редактировалось bulldog, 08.12.2010 в 22:43. |
#2
|
|||
|
|||
![]() попробывал так
Код:
FHttp.get('сайт'); begin while not Terminated do for I := 1 to h do//подвисает здесь begin Sleep(1000); Synchronize(DoAnything); FHttp.get('сайт'+ g1); procedure BOT.DoAnything; begin Form1.Caption := IntToStr(i); end; |
#3
|
||||
|
||||
![]() можно так:
Код:
//вместо while not Terminated do //сделать while true do jmp $ ; Happy End! The Cake Is A Lie. |
#4
|
|||
|
|||
![]() Но это всё равно не уберёт зависание формы
|
#5
|
||||
|
||||
![]() Чего-то не понимаю. Sleep вызывается в потоке. В таком случае должен спать только поток. Я уже сто раз так делал - и все нормально.
Скинь сюда пожалуйста весь код, связанный с потоком. jmp $ ; Happy End! The Cake Is A Lie. |
#6
|
|||
|
|||
![]() Код:
function SetTimeOutJS(Str: String): Integer;//ищет время на странице var I: Integer; S: String; begin S := '")'','; I := Pos(S, Str); if I > 0 then begin S := Copy(Str, I + Length(S), Length(Str)); I := Pos(')', S); if I > 0 then begin S := Trim(Copy(S, 1, I - 1)); I := StrToIntDef(S, -1); if I > 0 then Result := I else Result := 0; end; end; end; procedure BOT.Execute; var N: String; h: Integer; D: Integer; Otvet: String; Otvet1: String; g1: String; begin Otvet := HTTP_BOT.get('http://' + Сайт + N); Ur := парсит(Otvet); Otvet1 := HTTP_BOT.get('http://' + Сайт + Ur); h := SetTimeOutJS(Otvet1); /// HTTP_BOT.get('Сайт'); Sleep(h);// h может быть от 10 секунд до ... HTTP_BOT.get('http://' + Сайт + g1); end; Последний раз редактировалось bulldog, 08.12.2010 в 23:45. |