Передача значения переменной в _IENavigate Autoit

У меня есть массив с именем $urls, который содержит URL-адреса. Я хочу использовать _IENavigate в цикле For для посещения каждого из этих URL-адресов, но не знаю, как использовать массив с _IENavigate.

Это то, что у меня есть до сих пор:

If Not _FileReadToArray("\urls.txt", $urls) Then
    MsgBox(4096, "Error", " Error reading log to Array. Error:" & @error)
    Exit
EndIf

For $u = 1 to $urls[0]
    _IENavigate($mIE, $urls)
Next

person Roku    schedule 09.07.2013    source источник


Ответы (2)


Чтобы получить доступ к номеру элемента массива N, вы используете $aArray[N].

Local $aArray[6] = [5, "Hello", "World", "Foo", "Bar", "Goodbye"]

For $i = 1 To $aArray[0]
    ConsoleWrite(  $aArray[$i]   & @LF)
Next

Итак, в приведенном выше примере вы хотите использовать $urls[$u] в цикле For...Next.

person Matt    schedule 09.07.2013

Мэтт правильный. На самом деле он адаптирует структуру вашего кода и предоставляет рабочий пример.

Пока вам не нужно иметь дело с индексами массива внутри вашего цикла, чище не использовать размер массива в первом элементе, а затем использовать For ... In ... loop:

For $url In $urls
    _IENavigate($mIE, $urls)
Next 

Чтобы удалить первый элемент, вы можете #include <Array.au3> использовать _ArrayDelete($urls, 0). Но я бы предпочел прочитать файл с URL-адресами без размера, сохраненного в качестве первого элемента:

$urls = StringSplit(StringStripCR(FileRead("urls.txt")), @LF, 2)

- так что вам не нужно иметь дело с первым элементом, и вы уже разделены строками. Вы все еще можете использовать UBound($urls), чтобы узнать об успехе.

И подсказка: используйте отступы, чтобы сделать ваш код более читабельным.

person Samoth    schedule 09.07.2013