Что нового

Составление сложных условий

BlackRock

Новичок
Сообщения
16
Репутация
0
Здравствуйте, уважаемые программисты, помогите, пожалуйста, грамотно оформить сложное для меня условие,
бьюсь уже несколько дней, и пока безрезультатно. На живом примере я быстрее разберусь.

Код:
_IENavigate($oIE, "http://url")
 ;На загруженной странице мне нужно отыскать необходимые ссылки и в зависимости от условий произвести клик.
     а) If link1<>0 and link3<>0 and link2==0 then
             link1.clik
             ;переход к пункту а.
     b) If link2<>0 and link3<>0 and link1==0 then
             link2.clik
             ;переход к пункту а.
     c) If link1==0 and link2==0 and link3<>0 then
             link3.clik
             ;переход к пункту а.
     d) If link1==0 and link2==0 and link3==0 then
           _IENavigate($oIE, "http://url")  
             Sleep(60000) ;и всё заново.

По одиночке я спокойно клацаю по ссылкам через функцию StringRegExp($text, "текст", 0), но вот чтобы соблюдались условия --не получается. :(
 

igor1##9

Новичок
Сообщения
3
Репутация
1
Вроде так :smile:

Код:
_IENavigate($oIE, "http://url")
while 1
	If $link1<>0 and $link3<>0 and $link2==0 then
		$link1.clik
	ElseIf $link2<>0 and $link3<>0 and $link1==0 then
		$link2.clik
	ElseIf $link1==0 and $link2==0 and $link3<>0 then
		$link3.clik
	ElseIf $link1==0 and $link2==0 and $link3==0 then
		_IENavigate($oIE, "http://url")  
		Sleep(60000)
	EndIf
WEnd
 
Автор
BlackRock

BlackRock

Новичок
Сообщения
16
Репутация
0
Код:
Func _Proverka_yslovia()
   while 1
    If $slink1<>0 and $slink3<>0 and $slink2==0 then
	   $text1 = _IEBodyReadText($oIE)
	   $slink1 =StringRegExp($text1, "text1", 0)
      _IELinkClickByText($oIE, "text1")
   ElseIf $slink2<>0 and $slink3<>0 and $slink1==0 then
	  $text2 = _IEBodyReadText($oIE)
	  $slink2 =StringRegExp($text2, "text2", 0)
       _IELinkClickByText($oIE, "text2")
    ElseIf $slink1==0 and $slink2==0 and $slink3<>0 then
	   $text3 = _IEBodyReadText($oIE)
	    $slink3 =StringRegExp($text3, "text3", 0)
        _IELinkClickByText($oIE, "text3")
    ElseIf $slink1==0 and $slink2==0 and $slink3==0 then
        _IENavigate($oIE, "http://url")  
        Sleep(60000)
    EndIf
WEnd
EndFunc   ;==>_Proverka_yslovia

If $slink1<>0 and $slink3<>0 and $slink2==0 then
If ^ ERROR


Опять ошибка


Добавлено:
Сообщение автоматически объединено:

igor1##9, удалённый комент не работает, плюс программу закрыть стало возможным только через диспетчер задач.
 

igor1##9

Новичок
Сообщения
3
Репутация
1
Код:
#include <IE.au3>
Global $oIE = _IECreate("http://url")
_Proverka_yslovia('текст1','текст2','текст3')




Func _Proverka_yslovia($text1,$text2,$text3)
	Local $slink1, $slink2, $slink3, $body
	While 1
		$body = _IEBodyReadText($oIE)
		$slink1 = StringRegExp($body, $text1, 0)
		$slink2 = StringRegExp($body, $text2, 0)
		$slink3 = StringRegExp($body, $text3, 0)

		If $slink1<>0 and $slink3<>0 and $slink2==0 then
			_IELinkClickByText($oIE, $text1)
		ElseIf $slink2<>0 and $slink3<>0 and $slink1==0 then
			_IELinkClickByText($oIE, $text2)
		ElseIf $slink1==0 and $slink2==0 and $slink3<>0 then
			_IELinkClickByText($oIE, $text3)
		ElseIf $slink1==0 and $slink2==0 and $slink3==0 then
			_IENavigate($oIE, "http://url")
			Sleep(60000)
			ExitLoop
		EndIf
	WEnd
EndFunc   ;==>_Proverka_yslovia


Не совсем понял откуда берутся $slink1, $slink2, $slink3.
 
Автор
BlackRock

BlackRock

Новичок
Сообщения
16
Репутация
0
Спасибо большое, всё работает как нужно!


Добавлено:
Сообщение автоматически объединено:

Как остановить выполнение этой функции кнопкой? Просто я изучал делфи7 , там прописывается событие на кнопку и всё. А как здесь прописать _Proverka_yslovia.stop
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
Пример из справки
[hide]
Код:
; Нажимайте Esc, чтобы завершить скрипт, и Pause/Break, чтобы приостановить

Global $Paused
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("{ESC}", "Terminate")
HotKeySet("+!d", "ShowMessage") ; Shift-Alt-d для вызова сообщения

MsgBox(4096, 'Сообщение', 'Нажмите горячую клавишу Pause/Break,' & @CRLF & 'чтобы увидеть как это работает.')

;=== Тело программы должно находится здесь ;===
While 1
    Sleep(100)
WEnd
;===

Func TogglePause()
    $Paused = Not $Paused
    While $Paused
        Sleep(100)
        ToolTip('Скрипт приостановлен')
    WEnd
    ToolTip("")
EndFunc

Func Terminate()
    Exit 0
EndFunc

Func ShowMessage()
    MsgBox(4096, "", "Это сообщение.")
EndFunc
[/hide]
 
Автор
BlackRock

BlackRock

Новичок
Сообщения
16
Репутация
0
Спасибо, но хотелось бы обойтись без использования "горячих клавиш". Плюс ко всему не работает кнопка "выход" в верхнем углу окна, приходится выходить через диспетчер задач. В идеале у меня должны быть 2 кнопки: Старт (запускает функцию с проверкой условий в этой теме выше) и Стоп (прерывающая выполнение функции)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
BlackRock,
Предупреждение За нарушение общих правил (пункт В.4):
Не лепите несколько вопросов разной тематики в один пост. По типу "Ребят, а ещё такой вопрос...". Каждый вопрос в свою тему.


С уважением, ваш Глобальный модератор.
 
Автор темы Похожие темы Форум Ответы Дата
E Стол заказов 56
F Общение 2
Верх