Что нового

[Ошибки] Функция _FileListArray не работает в куске кода

xCite

Новичок
Сообщения
9
Репутация
0
Здравствуйте. Не могу понять что не так. Есть кусок кода.
Код:
Global $Extention[8] = ["_d", "_ad", "_i", "_z", "_ne", "_pc", "_pa", "_jr"]
;...........
Func InsertTheCardsIntoABClient()
   ;мне страшно
   $Temp2Dir = @ScriptDir & "\_temp"
   
   For $a = 0 To 7
	  If $CountOfCard[$a] > 0 Then
		 $Temp2List = _FileListToArray($Temp2Dir, $Extention[$a], 1)
		 For $s = 1 To $CountOfCard[$a]
			ClickOnButtonToInsertCards($a + 1)
			WinWaitActive("Оберіть файл для завантаження даних")
			Sleep(500)
			Send($Temp2Dir & "\" & $Temp2List[$s])
			Sleep(100)
			ControlClick("ІАС ДКРС <" & $LoginUserName &">", _
			   "Оберіть файл для завантаження даних", _
				  "[CLASS:TButton; INSTANCE:2]", "left", 1)
			CardInsertedSuccess()
			If $a = 2 Then
			   ABClientClose()
			   Sleep(1000)
			   ClearKruDataDir()
			   Sleep(1000)
			   ABClientOpen()
			EndIf
		 Next
		 WriteLog("Подлиты все " & $Extention[$a] & ".kru")
	  EndIf
   Next
   WriteLog("Подлиты все карты")
   $IsCardCame = 0
   $CountOfCard[8] = [0, 0, 0, 0, 0, 0, 0, 0]
EndFunc ; --- InsertTheCardsIntoABClient() ---

Выдает ошибку:
Код:
C:\IKPodliv\IKPodliv.au3 (430) : ==> Subscript used with non-Array variable.:
Send($Temp2Dir & "\" & $Temp2List[$s])
Send($Temp2Dir & "\" & $Temp2List^ ERROR

Подскажите, где ошибка?
 

asdf8

Скриптер
Сообщения
564
Репутация
152
После
Код:
$Temp2List = _FileListToArray($Temp2Dir, $Extention[$a], 1)

нужно проводить проверку ошибок, $Temp2List в случае ошибки может быть не массивом или иметь менее двух элементов
 
Автор
X

xCite

Новичок
Сообщения
9
Репутация
0
Так проводил проверку. Взял этот кусок кода, вставил в новый файл, убрал всё лишнее и... о, чудо! Он запустился. А тут никак. Вот и не пойму что тут не так.
П.С. А массив разве не может состоять из одного элемента?
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Вставь после _FileListToArray _arraydisplay и посмотри шо он кажет.
 
Автор
X

xCite

Новичок
Сообщения
9
Репутация
0
Нет, цикл начинается с
Код:
For $a = 0 To $CountOfCard[$a]


Попробовал написать
Код:
For $a = 0 To $Temp2List[0]


В программе $CountOfCard[$a] = $Temp2List[0]
Теперь эту же ошибку выбивает на этом участке кода. Сейчас или сдамся, или башка лопнет =(


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

Простите, гоню. Забыл в маске звездочки поставить.
Всем спасибо
 

asdf8

Скриптер
Сообщения
564
Репутация
152
Попробуйте так:
Код:
Func InsertTheCardsIntoABClient()
	;мне страшно
	$Temp2Dir = @ScriptDir & "\_temp"
	
	For $a = 0 To 7
		If $CountOfCard[$a] > 0 Then
			$Temp2List = _FileListToArray($Temp2Dir, $Extention[$a], 1)
			If Not @Error Then
				For $s = 1 To $CountOfCard[$a]
					ClickOnButtonToInsertCards($a + 1)
					WinWaitActive("Оберіть файл для завантаження даних")
					Sleep(500)
					Send($Temp2Dir & "\" & $Temp2List[$s])
					Sleep(100)
					ControlClick("ІАС ДКРС <" & $LoginUserName & ">", _
							"Оберіть файл для завантаження даних", _
							"[CLASS:TButton; INSTANCE:2]", "left", 1)
					CardInsertedSuccess()
					If $a = 2 Then
						ABClientClose()
						Sleep(1000)
						ClearKruDataDir()
						Sleep(1000)
						ABClientOpen()
					EndIf
				Next
				WriteLog("Подлиты все " & $Extention[$a] & ".kru")
			EndIf
		EndIf
	Next
	WriteLog("Подлиты все карты")
	$IsCardCame = 0
	$CountOfCard[8] = [0, 0, 0, 0, 0, 0, 0, 0]
EndFunc
 
Автор
X

xCite

Новичок
Сообщения
9
Репутация
0
Проблема была в том, что в маске забыл поставить звездочки.
Спасибо всем
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
xCite [?]
Проблема была в том, что в маске забыл поставить звездочки
Если не проверять на массивность проблема может вернуться.
 
Верх