Что нового

[Массивы] StringSplit не верно работает

kristow13

Новичок
Сообщения
76
Репутация
0
Привет всем.
Код:
$arr = StringSplit($line, " :: ")
	  If IsArray($arr) Then
		 $d1 = $arr[1]
		 $d2 = $arr[2]

StringSplit не верно работает. Подскажите как исправить работу...

Я открываю и читаю файл с содержанием:
Код:
14/07/12,12:00 :: 14
И мне надо разделить 14/07/12,12:00 и 14.
Прописываю StringSplit($line, " :: ") по логике должно делить :: а на практике :

Спасибо за помощь! :-[
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Код:
StringSplit($line, " :: ", 1)

Внимательно читайте документацию.

Флаг 1.
839f09ede6.png
 
Автор
kristow13

kristow13

Новичок
Сообщения
76
Репутация
0
Спасибо, не доглядел...
Просто использовал этот параметр ранее, а сейчас в документацию забыл залезть... :-[


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

Поставил флаг, начал работать как надо.
НО у меня файл из несколько строк. И мой скрипт первую строку обрабатывает, а на второй строке кидает ошибку...
Файл вида:
Код:
14/07/14,13:00 :: 142632
14/07/14,15:40 :: 142645
14/07/14,15:50 :: 142650
14/07/14,16:00 :: 142655
Мой код:
Код:
For $i=1 To 100
ConsoleWrite("i ="&$i & @LF)
$line = FileReadLine($file, $i)
If @error = -1 Then exitloop 1
$arr = StringSplit($line, "::",1)
If IsArray($arr) Then
		 $d1 = $arr[1]
		 $d2 = $arr[2]
		 ConsoleWrite("d1 ="&$d1 & @LF)
		 ConsoleWrite("d2 ="&$d2 & @LF)
EndIf
$arr=0
   Next

Первоя страка читается без проблем, а как вторая так ошибка: ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
$d2 = $arr[2]
$d2 = ^ ERROR

Подскажите в чем косяк :stars:
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
kristow13 [?]
Подскажите в чем косяк
stars.gif
в том, что у тебя где-то есть строка без разделителя или только с одним фрагментом текста. как следствие создаваемый массив имеет только один элемент (не считая нулевого - количество элементов). поставь простейший вывод сообщений для переменных вызывающих ошибку, или подозрение, как минимум.
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Замени
Код:
If IsArray($arr) Then


На
Код:
If UBound( $arr ) = 3 Then


Или на
Код:
If $arr[0] = 2 Then
 
Автор
kristow13

kristow13

Новичок
Сообщения
76
Репутация
0
и правда... косяк был в самом читаемом файле... :scratch:
Сейчас все пашет! Спасибо всем за помощь!
 
Верх