Что нового

[Массивы] Считать файл в многомерный массив

lirikmel

Продвинутый
Сообщения
225
Репутация
84
никак не могу заставить данные считывать из файла в том виде в каком необходимо ...в скрипте была строка
Код:
Dim $avArray [100][3]=[['307.89','396.83'],['290.38','387.84'],['275.81','385.98'],['257.95','384.32'],['236.32','384.61'],['215.73','384.73'],['193.02','387.1'],['171.22','403.32'],['154.77','417.59'],['144.41','426.79'],['123.65','432.59'],['95.22','431.07'],['76.9','431.05'],['60.74','432.49']] 
_ArrayDisplay($avArray);смотрим

что выдавало массив с несколькими строками и 3 столбцами

....как можно получить такого же ввида массив с помощью
Код:
_FileReadToArray

с записями в файле ввиде
11,11 , 222,2
333,3 , 44,44
и т.д.

спасибо за помощь зарание -)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,320
lirikmel
ИМХО, Вы не самый удачный разделитель выбрали. Попробуйте так:
Код:
#include <Array.au3>

$sDelim = ' , '
$iUbound1 = 0
$iUbound2 = 0
$sRead = FileRead(@ScriptDir & '\1.txt')
$aRead = StringSplit(StringStripCR($sRead), @LF, 2)

$iUbound1 = UBound($aRead)
For $i = 0 To $iUbound1 - 1
	StringReplace($aRead[$i], $sDelim, '')
	If @extended > $iUbound2 Then
		$iUbound2 = @extended
	EndIf
Next
Dim $aResult[$iUbound1][$iUbound2 + 1]
For $i = 0 To $iUbound1 - 1
	;$sTemp = StringReplace($aRead[$i], $sDelim, '|');лишняя строка, спасибо AZJIO
	$aTemp = StringSplit($aRead[$i], $sDelim, 1)
	For $j = 1 To $aTemp[0]
		$aResult[$i][$j - 1] = StringReplace($aTemp[$j], ',', '.')
	Next
Next
_ArrayDisplay($aResult)

Файл 1.txt :
Код:
11,11 , 222,2
333,3 , 44,44
11,11 , 222,2
333,3 , 44,44 , 44,44 , 44,44
11,11 , 222,2
333,3 , 44,44
11,11 , 222,2
333,3 , 44,44
11,11 , 222,2 , 44,44
333,3 , 44,44
11,11 , 222,2
333,3 , 44,44
11,11 , 222,2 , 44,44
333,3 , 44,44
 

AZJIO

Меценат
Меценат
Сообщения
2,757
Репутация
1,151
lirikmel
Вот ещё упрощённый вариант.

Код:
#include <Array.au3>
#include <File.au3>
Global $aArray, $aRezultat[100][3]
_FileReadToArray(@ScriptDir & '\1.txt', $aArray)
For $i = 1 to $aArray[0]
    $aTemp = StringSplit($aArray[$i], ' , ', 1)
	For $j = 1 to $aTemp[0]
		$aRezultat[$i][$j-1]=$aTemp[$j]
	Next
Next
_ArrayDisplay($aRezultat)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,320
OffTopic:
AZJIO
Совсем забыл про flag = 1 в StringSplit(). :-[
Поправил свой код.
 
Верх