Что нового

[Сеть, интернет] повтор функции 3-5 раз при разрыве связи с инет

  • Автор темы dreamorder
  • Дата начала
D

dreamorder

Гость
Доброго времени суток гос-да.
Есть рабочая функция:

Код:
Func xxx()
   	$pData=BinaryToString(InetRead('https://................',1),4) ;получаем текст
  	$x1 = StringRegExp($pData, '(\d+\.\d+)', 3) ; ищем текст в HTML
   If IsArray($x1) Then  ; если нашли то >>
   ; _ArrayDisplay($x1)
	$x11 = Round($x1, 2)
    GUICtrlSetData($label1,$x11) ; изменяем в label текст на найденый текст
Else
	Call('xxx')
EndIf
EndFunc


при не устойчивой связи с инетом работает нормально,
но в случае разрыва связи скажем на 3-5 минут, уже не актуальный код.
Помогите пожалуйста поправить функцию так, что бы в случае разрыва с инетом на 3-5 мин.
вызов функции

Код:
Else
	Call('xxx')


повторился 3-5 раз и всё, потом выход.

Заранее благодарю.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Сделайте глобальную переменную, и перед каждым call прибавляйте к ней 1, а в начале функции xxx() делайте проверку, превысила ли эта перменная 5, если да, то делайте выход.

P/s Call("xxx") можно заменить на обычный вызов функции: xxx(). Т.е call тут не нужен.
В редакторе SciTe если очень хорошая функция "Tidy AutoIt Source" , выбирете ее и увидете как ваш код преобразится в более читаемый вид.
 
Автор
D

dreamorder

Гость
вот что вышло :


Код:
Global $inetyt 

Func uu()
If  $inetyt > 55 Then
Sleep(100)
Exit
EndIf
Func xxx()
  uu()
    Local $pData
    $pData=BinaryToString(InetRead('https://................',1),4) ;получаем текст
    $x1 = StringRegExp($pData, '(\d+\.\d+)', 3) ; ищем текст в HTML
   If IsArray($x1) Then  ; если нашли то >>
   ; _ArrayDisplay($x1)
    $x11 = Round($x1, 2)
    GUICtrlSetData($label1,$x11) ; изменяем в label текст на найденый текст
Else
   	$inetyt +=1
       xxx()
EndIf
EndFunc


работает!

Спасибо :smile:
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
dreamorder
это точно работает? :scratch:
 
Автор
D

dreamorder

Гость
DarWiM
Спасибо за указания на ошибку в примере.
Поправил. Теперь всё верно в примере. Рабочий. :-[
 
Верх