Что нового

[Массивы] Удалить прочитанную строку одномерного массива

vasykas

Новичок
Сообщения
24
Репутация
0
Здравствуйте!
есть большой одномерный массив 20 мв, первые 500 строк обрабатывает нормально
но потом 2 сек одна строка, есть ли возможность удалять прочитанные
строки не перезаписывая массив? Или как нибудь индексировать прочитанную
строку и с нее продолжать. _ArrayDelete перезаписывает тем самым теряю скорость.
Код:
$dic = FileRead($var)
$sLines = StringSplit(StringStripCR($dic), @LF)
 $oIE = _IECreate($url)
;============================================================================== 
For $i = 1 To Ubound($sLines) - 1
   If GUIGetMsg() = $stop Then ExitLoop
     $oP = _IEGetObjById($oIE, $name)
     _IEFormElementSetValue($oP, $sLines[$i])
       $oInputs = _IETagNameGetCollection($oIE, "input")
          ;Sleep(10)
          For $oInput In $oInputs
       If $oInput.type = "submit" Then
        _IEAction($oInput, "click")
        _IELoadWait($oIE)
 ExitLoop
       EndIf
	Next
Next
 
Автор
V

vasykas

Новичок
Сообщения
24
Репутация
0
Решил проблему так: (может кому пригодится)
Код:
$dic = FileRead($var)
$sLines = StringSplit(StringStripCR($dic), @LF)
 $oIE = _IECreate($url)

_ArraySort($sLines, 0, 1)        ;Добавил ====================================

For $i = 1 To Ubound($sLines) - 1
   If GUIGetMsg() = $stop Then ExitLoop
     $oP = _IEGetObjById($oIE, $name)
     _IEFormElementSetValue($oP, $sLines[$i])
       $oInputs = _IETagNameGetCollection($oIE, "input")
          ;Sleep(10)
          For $oInput In $oInputs
       If $oInput.type = "submit" Then
        _IEAction($oInput, "click")
        _IELoadWait($oIE)
 ExitLoop
       EndIf
    Next
;-----------------------------------------------И здесь
$j +=1
If $j = 1000 Then
$iKeyIndex = _ArrayBinarySearch($sLines, $sLines[$i], 1)
$j = 0
For $l = 1 To 980
_ArrayDelete($sLines, $l)
Next
$l = 0
EndIf 
;------------------------------------------------------
Next
 
Верх