Что нового

Считать два массива и посылать две разных переменных одной строкой в окно

Absolutelight

Новичок
Сообщения
4
Репутация
0
Версия AutoIt: 3

Описание:
Есть два файла, так же есть два массива из этих файлов.
Задача такая: Считать два массива и посылать две разных переменных одной строкой в окно стороннего приложения telnet. При этом переменных: $aTokens может быть 0 и 1.
А переменных $aComm может быть сколько угодно 0, 1, 2, 3, 4 (они вводятся пользователем и сохраняются в файл commands.txt, затем файл commands.txt и считывается в массив.)
Нужно обойти ошибку количества команд и правильно оформить функцию for $i
Примечания:

Код:
Func _grabManual()

_FileReadToArray("IN\reader.txt", $aTokens, 0, "|")
_FileReadToArray("command\commands.txt", $aComm, 0, ",")

; вот здесь выдает ошибку, если в commands.txt,  например, 6 команд через запятую:


For $i = 0 To UBound($aTokens) - 1
For $i = 0 To UBound($aShow) - 1
    WinWait("Telnet", "", 1)
    WinActivate("Telnet")
	$str = $aComm[$i][0] & @CRLF & $aComm[$i][1] & "$aComm[$i][сколько угодно]" & $aTokens[$i][1] & $aTokens[$i][0] 
	ControlSetText("Telnet", "", "[RegExpClass:WindowsForms10.RichEdit20W; INSTANCE:1]", $str)
	sleep(400)
	ControlSend ("Telnet", "", "", "^r")
   next
   next
EndFunc
 

InnI

AutoIT Гуру
Сообщения
4,911
Репутация
1,427
Absolutelight
Где? Файлы бывают разные. Нужно знать формат.

так же есть два массива из этих файлов
Считать два массива
Нужно определиться: либо массивы уже есть (тогда нужен их пример), либо их нужно создать (тогда нужны файлы).

вот здесь выдает ошибку
Какую?

Если бы я не представлял примерно (по другой вашей теме) о чём вы говорите, я бы просто прошёл мимо не задавая вопросов. Все другие, думаю, так и сделали. Это на будущее - чем больше информации, тем быстрее помогут.

Теперь по теме.
Функция _FileReadToArray() при чтении в двумерный массив требует одинаковое число полей в каждой строке. Если у вас в одной строке, допустим, пять команд, разделённых запятой, а в другой три, то функция выдаст ошибку. Поэтому будем читать в одномерный массив, а запятые заменим на пробелы (или чем вы там команды разделяете). Кстати, при сохранении команд лучше их сразу записать в нужном формате, тогда и разделители удалять не придётся.

Пробуйте (не знаю, что за переменная $aShow, поэтому заменил её на $aComm)
Код:
#include <File.au3>

Global $aTokens, $aComm

_grabManual()

Func _grabManual()

	_FileReadToArray("IN\reader.txt", $aTokens, 0, "|")
	_FileReadToArray("command\commands.txt", $aComm, 0)

	For $i = 0 To UBound($aTokens) - 1
		For $j = 0 To UBound($aComm) - 1
			$str = StringReplace($aComm[$j], ",", " ") & " " & $aTokens[$i][1] & " " & $aTokens[$i][0]
			ConsoleWrite($str & @CRLF)
			Sleep(100)
		Next
	Next

EndFunc   ;==>_grabManual
 
Верх