Что нового

Не получается указать переменные в скрипте

_Lexa98_

Осваивающий
Сообщения
551
Репутация
25
Всем привет. :smile:

Написал клиент для Dark Orbit:

Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
#NoTrayIcon

HotKeySet("{END}", "closedc")

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Login", 156, 130, 540, 398, -1, BitOR($WS_EX_TOPMOST,$WS_EX_WINDOWEDGE))
GUISetBkColor(0x646464)
$Input1 = GUICtrlCreateInput("", 72, 8, 73, 21)
GUICtrlSetBkColor(-1, 0xE3E3E3)
$Input2 = GUICtrlCreateInput("", 72, 39, 73, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_PASSWORD))
GUICtrlSetBkColor(-1, 0xE3E3E3)
$Input3 = GUICtrlCreateInput("", 72, 70, 73, 21)
GUICtrlSetBkColor(-1, 0xE3E3E3)
$Button1 = GUICtrlCreateButton("Log On", 16, 96, 123, 25)
GUICtrlSetBkColor(-1, 0x3399FF)
$Label2 = GUICtrlCreateLabel("Pass:", 18, 40, 48, 23)
GUICtrlSetFont(-1, 14, 800, 0, "LCD")
$Label1 = GUICtrlCreateLabel("Login:", 10, 8, 53, 23)
GUICtrlSetFont(-1, 14, 800, 0, "LCD")
$Label3 = GUICtrlCreateLabel("Server:", 1, 68, 67, 23)
GUICtrlSetFont(-1, 14, 800, 0, "LCD")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

Func go()
GUICreate("Engine", 156, 130, 540, 398, -1, BitOR($WS_EX_TOPMOST,$WS_EX_WINDOWEDGE))
Sleep (1000)
GUIDelete ($Form1)
$Obj1 = ObjCreate("Shell.Explorer.2")
$Obj1_ctrl = GUICtrlCreateObj($Obj1, 156, 341, 1, 1)
$Obj1.Navigate('http://darkorbit.bigpoint.com/cws.php')
$oForm = _IEFormGetObjByName ($Obj1, 'loginForm_default')
$oLogin = _IEFormElementGetObjByName ($oForm, 'loginForm_default_username')
$oPassword = _IEFormElementGetObjByName ($oForm, 'loginForm_default_password')
$sLogin = GUICtrlRead ($Input1)
$sPassword = GUICtrlRead ($Input2)
_IEFormElementSetValue ($oLogin, $sLogin)
_IEFormElementSetValue ($oPassword, $sPassword)
$oSubmit = _IEFormElementGetObjByName ($oForm, 'loginForm_default_login_submit')
_IEAction($oSubmit, 'click')
_IELoadWait($Obj1)
Sleep ( 3000 )
_IELinkClickByText ($Obj1, GUICtrlRead ($Input3))
Sleep ( 2000 )
$Form1_1 = GUICreate("Dark Client", 501, 131, 400, 390, -1, BitOR($WS_EX_TOPMOST,$WS_EX_WINDOWEDGE))
GUISetBkColor(0x646464)
$Button2 = GUICtrlCreateButton("Start", 368, 32, 123, 41)
GUICtrlSetFont(-1, 20, 800, 0, "LCD")
GUICtrlSetBkColor(-1, 0x3399FF)
$Label1 = GUICtrlCreateLabel($Input1, 0, 0, 500, 26)
GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
$Button3 = GUICtrlCreateButton("SkyLab", 9, 32, 123, 41)
GUICtrlSetFont(-1, 20, 800, 0, "LCD")
GUICtrlSetBkColor(-1, 0x99B4D1)
$Button5 = GUICtrlCreateButton("Exit", 368, 80, 123, 41)
GUICtrlSetFont(-1, 20, 800, 0, "LCD")
GUICtrlSetBkColor(-1, 0xC0C0C0)
$Button8 = GUICtrlCreateButton("Galaxy", 10, 80, 123, 41)
GUICtrlSetFont(-1, 20, 800, 0, "LCD")
GUICtrlSetBkColor(-1, 0x008080)
$Button9 = GUICtrlCreateButton("Torgs", 143, 32, 123, 41)
GUICtrlSetFont(-1, 20, 800, 0, "LCD")
GUICtrlSetBkColor(-1, 0x008000)
GUISetState(@SW_SHOW)
;http://ru3.darkorbit.bigpoint.com/indexInternal.es?action=internalHandel
EndFunc

Func sky()
$form2 = GUICreate("SkyLab", 600, 500, -1, -1)
$Obj2 = ObjCreate("Shell.Explorer.2")
$Obj2_ctrl = GUICtrlCreateObj($Obj2, 1, 1, 600, 500)
$Obj2.Navigate('http://ru3.darkorbit.bigpoint.com/indexInternal.es?action=internalSkylab')
GUISetState ( @SW_SHOW )
EndFunc

Func gal()
$form5 = GUICreate("GalaxyGates", 600, 500, -1, -1)
$Obj2 = ObjCreate("Shell.Explorer.2")
$Obj2_ctrl = GUICtrlCreateObj($Obj2, 1, 1, 600, 500)
$Obj2.Navigate('http://ru3.darkorbit.bigpoint.com/indexInternal.es?action=internalGalaxyGates')
GUISetState ( @SW_SHOW )
EndFunc

Func tor()
$form8 = GUICreate("Torgs", 600, 500, -1, -1)
$Obj2 = ObjCreate("Shell.Explorer.2")
$Obj2_ctrl = GUICtrlCreateObj($Obj2, 1, 1, 600, 500)
$Obj2.Navigate('http://ru3.darkorbit.bigpoint.com/indexInternal.es?action=internalHandel')
GUISetState ( @SW_SHOW )
EndFunc

Func start()
$form3 = GUICreate("Dark Orbit", 1280, 1024, -1, -1, $WS_EX_TOOLWINDOW)
$Obj3 = ObjCreate("Shell.Explorer.2")
$Obj3_ctrl = GUICtrlCreateObj($Obj3, 1, 1, 1280, 1024)
$Obj3.Navigate('http://ru3.darkorbit.bigpoint.com/indexInternal.es?action=internalMapRevolution')
GUISetState ( @SW_SHOW )
GUICtrlCreateLabel("Для выхода нажмите на *END*", 2, 2, 107, 25)
EndFunc

Func closedc()
	GUIDelete ($form3)
EndFunc

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $Button1
			go()
		Case $Button2
			start()
		Case $Button3
			sky()
		Case $Button8
			gal()
		Case $Button9
			tor()
		Case $Button5
			Exit
		Case $GUI_EVENT_CLOSE
			GUIDelete ($form2)
			GUIDelete ($form5)
			GUIDelete ($form8)
			GUIDelete ($form3)
	EndSwitch
WEnd

Нажимаю "SyntaxCheck Prod" выходят ошибки:

Код:
>C:\Program Files\AutoIt3\SciTE\..\au3check.exe "C:\Users\_!Lexa!_\Desktop\DO Client.au3"
AutoIt3 Syntax Checker v1.54.8  Copyright (c) Tylo 2007

C:\Users\_!Lexa!_\Desktop\DO Client.au3(108,19) : WARNING: $form3: possibly used before declaration.
	GUIDelete ($form3)
	~~~~~~~~~~~~~~~~~^
C:\Users\_!Lexa!_\Desktop\DO Client.au3(116,16) : WARNING: $Button2: possibly used before declaration.
		Case $Button2
		~~~~~~~~~~~~~^
C:\Users\_!Lexa!_\Desktop\DO Client.au3(118,16) : WARNING: $Button3: possibly used before declaration.
		Case $Button3
		~~~~~~~~~~~~~^
C:\Users\_!Lexa!_\Desktop\DO Client.au3(120,16) : WARNING: $Button8: possibly used before declaration.
		Case $Button8
		~~~~~~~~~~~~~^
C:\Users\_!Lexa!_\Desktop\DO Client.au3(122,16) : WARNING: $Button9: possibly used before declaration.
		Case $Button9
		~~~~~~~~~~~~~^
C:\Users\_!Lexa!_\Desktop\DO Client.au3(124,16) : WARNING: $Button5: possibly used before declaration.
		Case $Button5
		~~~~~~~~~~~~~^
C:\Users\_!Lexa!_\Desktop\DO Client.au3(127,21) : WARNING: $form2: possibly used before declaration.
			GUIDelete ($form2)
			~~~~~~~~~~~~~~~~~^
C:\Users\_!Lexa!_\Desktop\DO Client.au3(128,21) : WARNING: $form5: possibly used before declaration.
			GUIDelete ($form5)
			~~~~~~~~~~~~~~~~~^
C:\Users\_!Lexa!_\Desktop\DO Client.au3(129,21) : WARNING: $form8: possibly used before declaration.
			GUIDelete ($form8)
			~~~~~~~~~~~~~~~~~^
C:\Users\_!Lexa!_\Desktop\DO Client.au3(108,19) : ERROR: $form3: undeclared global variable.
	GUIDelete ($form3)
	~~~~~~~~~~~~~~~~~^
C:\Users\_!Lexa!_\Desktop\DO Client.au3 - 1 error(s), 9 warning(s)
>Exit code: 2    Time: 0.457

Как исправить? :(
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Re: [Автоматизация] Dark Orbit клиент (ошибка)

_Lexa98_ [?]
Обозначить переменные.
Local, Global, Dim к вашим услугам. Подробности в справке.
 
Автор
_Lexa98_

_Lexa98_

Осваивающий
Сообщения
551
Репутация
25
Re: [Автоматизация] Dark Orbit клиент (ошибка)

Обозначаю, когда запускаю, бесконечно вылезает куча окон.
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Re: [Автоматизация] Dark Orbit клиент (ошибка)

Значит Вы где то накосячили. И создание и удаление форм можно избежать в данном скрипте.


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

И кстати. Переименуйте тему во что то нормальное.
 
Автор
_Lexa98_

_Lexa98_

Осваивающий
Сообщения
551
Репутация
25
Если Вам не трудно, вы можете исправить и написать правильный код?
А, то я не разобрался. :wacko:
 

DoKel

Любитель
Сообщения
15
Репутация
0
ocal, Global, Dim к вашим услугам. Подробности в справке.
Нет, Medic84, AutoIt же и без них назначать должен, если определённый флаг не стоит! А его тут нет... (По крайней мере я не нашёл)
_Lexa98_ , конкретизируйте проблемму. Какая куча окон вылетает? Что там написано? :scratch: Мы же не экстрасенсы! :-[
 
Автор
_Lexa98_

_Lexa98_

Осваивающий
Сообщения
551
Репутация
25
DoKel [?]
Какая куча окон вылетает? Что там написано?

Эта:

Код:
Func start()
$form3 = GUICreate("Dark Orbit", 1280, 1024, -1, -1, $WS_EX_TOOLWINDOW)
$Obj3 = ObjCreate("Shell.Explorer.2")
$Obj3_ctrl = GUICtrlCreateObj($Obj3, 1, 1, 1280, 1024)
$Obj3.Navigate('http://ru3.darkorbit.bigpoint.com/indexInternal.es?action=internalMapRevolution')
GUISetState ( @SW_SHOW )
GUICtrlCreateLabel("Для выхода нажмите на *END*", 2, 2, 107, 25)
EndFunc



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

По крайней мере, видно только эти.
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
DoKel [?]
Нет, Medic84, AutoIt же и без них назначать должен, если определённый флаг не стоит! А его тут нет... (По крайней мере я не нашёл)
Нет, Вы не правы. Да, он назначает всем переменным Вне функций - Global, а внутри функций Local
Но обратите внимание что человек создает глобальные переменные внутри функций - на это скрипт и ругается
 

DoKel

Любитель
Сообщения
15
Репутация
0
Medic84, а что, разве так нельзя? Т.е. все глобальные переменные для функций (т.е. изменяемые там) надо создавать заранее? Мда... Век живи, век учись!
:thanks: :thumbs_up: :thanks:
 
Автор
_Lexa98_

_Lexa98_

Осваивающий
Сообщения
551
Репутация
25
Кто нибудь из форумчанин знает ответ на вопрос?
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
_Lexa98_ [?]
Кто нибудь из форумчанин знает ответ на вопрос?
Элементарно. Пишешь вначале скрипта Global и перечисляешь те переменные, которые ты обозначаешь в функциях, но используешь во вне. Например в другой функции или в цикле While...WEnd
Код:
Global $Button2,$Button3,$Button4,$Button5,$Button8,$Button9,$Form2,$form3

Однако ошибка открытия кучи окон так и останется и этот косяк непонятно откуда появляется.
DoKel [?]
Т.е. все глобальные переменные для функций (т.е. изменяемые там) надо создавать заранее?
Нет. НЕ совсем. Их нужно обозначать если Вы их будете использовать вне функции или в другой функции, а если она требуется только в теле 1 функции и нигде более ее обозначать не обязательно.
 
Автор
_Lexa98_

_Lexa98_

Осваивающий
Сообщения
551
Репутация
25
Ладно, потом попробую исправить.
 

winstan

Эксплотатор)
Сообщения
406
Репутация
79
Medic84 [?]
Однако ошибка открытия кучи окон так и останется и этот косяк непонятно откуда появляется.
Вот где не понятный косячёк
Код:
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $Button1
            go()
        Case $Button2
            start()
        Case $Button3
            sky()
        Case $Button8
            gal()
        Case $Button9
            tor()
        Case $Button5
            Exit
        Case $GUI_EVENT_CLOSE
            GUIDelete ($form2)
            GUIDelete ($form5)
            GUIDelete ($form8)
            GUIDelete ($form3)
    EndSwitch
WEnd

Тут мы видем проверка события
Код:
$Button1 $Button2 $Button3 $Button8  $Button9 $Button5 $GUI_EVENT_CLOSE

однако создаётся только кнопки
$Button1 $Button5 ну и $GUI_EVENT_CLOSE
а остальные являются пустыми переменными и каждый прогон цикла считает что на них нажали.
те кнопки, которых не хватает, создаются только после выполнения фукции go(),вот и гоняют функции окошки :smile:
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Поэтому я и говорил что нужно перестраивать весь скрипт.
 

winstan

Эксплотатор)
Сообщения
406
Репутация
79
исправил добавив это в начало скрипта

Код:
Global $Button1,$Button2,$Button3,$Button4,$Button5,$Button8,$Button9,$form2,$form5,$form8,$form3
$Button1=1
$Button2=1
$Button3=1
$Button5=1
$Button8=1
$Button9=1


но вылетает ошибка обработка обьекта
Код:
Local $o_col = $o_object.document.forms.item($s_Name)
Local $o_col = $o_object.document^ ERROR
 
Автор
_Lexa98_

_Lexa98_

Осваивающий
Сообщения
551
Репутация
25
winstan [?]
но вылетает ошибка обработка обьектаКод: [Выделить]Local $o_col = $:shok:bject.document.forms.item($s_Name)Local $o_col = $:shok:bject.document^ ERROR

Вот это появилось внезапно. В других скриптах эта функция на отлично работает.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
winstan
Вместо
Код:
;...
$Button1=1
$Button2=1
$Button3=1
$Button5=1
$Button8=1
$Button9=1
;...
Можно так
Код:
;...
Switch $nMsg
	Case 0
		ContinueLoop
;...
 
Автор
_Lexa98_

_Lexa98_

Осваивающий
Сообщения
551
Репутация
25
Что делать с этим:

Код:
Local $o_col = $o_object.document.forms.item($s_Name)
Local $o_col = $o_object.document^ ERROR
 
Верх