Что нового

IniWrire and IniRead ошибка

kolosov

Новичок
Сообщения
137
Репутация
0
Добрый вечер. Помогите пожалуйсто. Переменные в файле записываются. А вот вытаскивать не хочет.
И выдаёт ошибку,при запуске скрипта.
Вот код:
Код:
Func Setting()
	MsgBox(0+4096,"Настройка","Откройте  вкладку 'Профессии' И наведите мышку на букву 'О' на кнопке 'повтОрить' и нажмите 'Enter' ")
		$Repley = MouseGetPos()
	MsgBox(0,"Настройка","Готово")
   IniWrite('Setting.ini','Staratel','XRepley',$Repley [0])
   IniWrite('Setting.ini','Staratel','YRepley',$Repley [1])
EndFunc

Func Read()
	$RePley [0] = IniRead('Setting.ini','Staratel','XRepley',"0")
	$RePley [1] = IniRead('Setting.ini','Staratel','YRepley',"0")
EndFunc


И вот такая ошибка :
Код:
(109) : ==> Expected a "=" operator in assignment statement.:
$RePley [0] = IniRead('Setting.ini','Staratel','XRepley',"0")
$RePley ^ ERROR


Заранее благодарен в помощи решения этой проблемы. :IL_AutoIt_1:
 
A

Alofa

Гость
Код:
Global $aRepley[2]

Func Setting()
    MsgBox(0+4096,"Настройка","Откройте  вкладку 'Профессии' И наведите мышку на букву 'О' на кнопке 'повтОрить' и нажмите 'Enter' ")
        $Repl = MouseGetPos()
    MsgBox(0,"Настройка","Готово")
   IniWrite('Setting.ini','Staratel','XRepley',$Repl [0])
   IniWrite('Setting.ini','Staratel','YRepley',$Repl [1])
   $aRepley[0] = $Repl [0]
   $aRepley[1] = $Repl [1]
EndFunc

Func Read() ; Для того чтобы получить координаты полученные в функции Setting() вам не нужно каждый раз считывать их
; из .INI файла - они и так у вас хранятся в Глобально объявленной переменной, на протяжении работы всего скрипта.
    $aRepley [0] = IniRead('Setting.ini','Staratel','XRepley',"0")
    $aRepley [1] = IniRead('Setting.ini','Staratel','YRepley',"0")
EndFunc



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

kolosov
Локальные переменные, объявленные внутри пользовательских функций "живут" только внутри этих функций.

Вот 2 примера, попробуйте разобраться как они работают:
Код:
_My_Func() ; Вызов функции

Func _My_Func()
    Local $iA = 5
	MsgBox(4096, 'Я работаю.',  $iA)
EndFunc

MsgBox(4096, 'Результат', $iA) ; Произойдет критическая ошибка
; ... потому что за пределами _My_Func() переменной $iA не существует

Код:
Global $iA ; Глобальная переменная

$iA = 'Значение'

_My_Func() ; Вызов функции

MsgBox(4096, 'Результат', $iA)

Func _My_Func()
    Local $iA = 5 ; Локальные переменные, объявленные внутри пользовательских функций "живут" только внутри этих функций.
	; Уберите ключевое слово Local и это будет уже считаться, что вы присвоили значение Глобальной переменной $iA.
	MsgBox(4096, 'Я работаю.',  $iA)
EndFunc


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

Добавил комментарии.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
kolosov
есть очень полезная привычка - начинать написание кода со строки
Код:
Opt("MustDeclareVars", 1)

в этом случае тебе придется объявлять каждую новую переменную. а значит не будет каши из переменных.
 
Автор
K

kolosov

Новичок
Сообщения
137
Репутация
0
К сожалению, С тем что вы написали , ошибка не куда не делась (


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

Все переменные у меня отмечены как глобальные.


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

Мне в ступор приводит то, что в других скриптах у меня также идёт сахранение в файл, вытаскивает из фала нормально. Но а тут по чему-то ошибка.
 
A

Alofa

Гость
kolosov сказал(а):
К сожалению, С тем что вы написали , ошибка не куда не делась (
На этом этапе данной темы вам сможет помочь только Autoit гуру-экстрасенс.
Выкладывайте весь скрипт и посмотрим, что там не так.
 
Автор
K

kolosov

Новичок
Сообщения
137
Репутация
0
Вот весь скрипт:
Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <EditConstants.au3>
#include <ScreenCapture.au3>
#include <ComboConstants.au3>
#include <File.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Старатель", 300, 256, 929, 1246)
$OneGramlin = GUICtrlCreateCheckbox("1)Гремлин", 12, 20, 97, 17)
$Start = GUICtrlCreateButton("Начать", 16, 216, 75, 25)
$Exit = GUICtrlCreateButton("Закончить", 104, 216, 75, 25)
$Setting = GUICtrlCreateButton("Настройка", 192, 216, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
	Read()


;Первый гремлен
Global $AtmosferaLeft [2] = [-4,-109]
Global $AtmosferaRight [2] = [+44,-100]
Global $Cinning [2] = [+1,-54]
Global $Aggression [2] = [-86,-50]
Global $Calm [2] = [+90,-53]
Global $Repley [2] = [0,0]
Global $ColorRed = 0x261a10
Global $ColorGreen = 0x1d2e6f
Global $ColorBlue = 0xd25a00
Global $ColorNumRed = 0
Global $ColorNumGreen = 0
Global $ColorNumBlue = 0
Global $ButtonRePlay = 0 
Global $ColorRePlay = 0x750000
Global $RepleyLeft [2] = [-99,6]
Global $RepleyRight [2] = [+103,+13]

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Start
			Start()
		Case $Exit
			Exit
		Case $Setting
			Setting()
	EndSwitch
WEnd


Func Start()

	While 1 
		if  GUICtrlRead($OneGramlin) =  1 then OneGramlenStart()
	   RePlay()
	WEnd
EndFunc

Func OneGramlenStart()

		 PixelSearch($Repley[0] + $AtmosferaLeft [0] , $Repley[1] + $AtmosferaLeft[1],$Repley[0] + $AtmosferaRight[0],$Repley[1] + $AtmosferaRight[1],$ColorRed,5)
	If Not @Error Then
		$ColorNumRed = 1
	EndIf
		 PixelSearch($Repley[0] + $AtmosferaLeft [0] , $Repley[1] + $AtmosferaLeft[1],$Repley[0] + $AtmosferaRight[0],$Repley[1] + $AtmosferaRight[1],$ColorGreen,5)
	If Not @Error Then
		$ColorNumGreen = 1
	EndIf
		 PixelSearch($Repley[0] + $AtmosferaLeft [0] , $Repley[1] + $AtmosferaLeft[1],$Repley[0] + $AtmosferaRight[0],$Repley[1] + $AtmosferaRight[1],$ColorBlue,5)
	If Not @Error Then
		$ColorNumBlue = 1
	EndIf
	Select
		Case $ColorNumRed =1
			MouseClick('left',$Repley[0] + $Cinning[0],$Repley[1] + $Cinning[1])
			$ColorNumRed = 0
			Case $ColorNumGreen =1
			MouseClick('left',$Repley[0] + $Calm[0],$Repley[1] + $Calm[1])
			$ColorNumGreen = 0
			Case $ColorNumBlue =1
			MouseClick('left',$Repley[0] + $Aggression[0],$Repley[1] + $Aggression[1])
			$ColorNumBlue = 0
	EndSelect
EndFunc

Func RePlay()
	PixelSearch($Repley[0]  + $RepleyLeft [0],$Repley[1]+$RepleyLeft[1],$Repley[0]+$RepleyRight[0],$Repley[1]+$RepleyRight[1],$ColorRePlay,2)
	If Not @Error Then
		$ButtonRePlay = 1
EndIf
Select
			Case $ButtonRePlay = 1
				MouseClick('left',$Repley[0],$Repley[1])
				$ButtonRePlay = 0
				EndSelect
EndFunc

Func Setting()
	MsgBox(0+4096,"Настройка","Откройте  вкладку 'Профессии' И наведите мышку на букву 'О' на кнопке 'повтОрить' и нажмите 'Enter' ")
	$Repley = MouseGetPos()
	MsgBox(0,"Настройка","Готово")
   IniWrite('Setting.ini','Staratel','XRepley',$Repley [0])
   IniWrite('Setting.ini','Staratel','YRepley',$Repley [1])
EndFunc

Func Read()
   $RePley [0] = IniRead('Setting.ini','Staratel','XRepley',"0")
	$RePley [1] = IniRead('Setting.ini','Staratel','YRepley',"0")
EndFunc
 
A

Alofa

Гость
Сейчас нет компа под рукой, но первое что бросается а глаза:
- вы делаете вызов пользовательской функции Read(), в которой происходит обращение к элементам массива $Repley, ДО того как объявлен этот самый массив.
То есть должно быть примерно так:
Код:
; ...
Global $Repley [2]
Read()


А лучше сразу вот так:
Код:
Global $Repley = Read()
; ...
; ...
Func Read() ;Сама функция будет выглядеть так:
   Local $RePl[2]
   $RePl [0] = IniRead('Setting.ini','Staratel','XRepley',"0")
   $RePl [1] = IniRead('Setting.ini','Staratel','YRepley',"0")
   Return $RePl
EndFunc
 
Автор
K

kolosov

Новичок
Сообщения
137
Репутация
0
Спасибо. Тупая ошибка. Теперь все нормально.
 
Верх