Что нового

[Массивы] Поместить текст из тхт в 2х мерный массив

Pero

Новичок
Сообщения
17
Репутация
0
Хай умные дяди и тети в autoit еще не разобрался нормально и бес понятия получиться ли так как я задумал !
есть файл в нем текст разделенный ;
пример
rgoekpewpegmkpmk;3543763523536
efreg4t453y435t54;56u65u4y6546
ну и т.д
как я себе представляю работу
текст до ; помещается в массив не знаю как в autoit но в с++ будет примерно так на выходе
Код:
string a[2][2]
a[1][1]  // сюда записан текст rgoekpewpegmkpmk
a[2][1] //3543763523536

a[1][2] //efreg4t453y435t54
a[2][2] //56u65u4y6546
теперь к делу как я понимаю надо сделать цикл перебора массива и его записи
но не совсем понимаю как достать нужный мне текст из тхт
прошу накидать код с описанием
Ps заранее всем спасибо
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
Код:
FileReadLine 
StringSplit

Если навести курсор на команду, то можно перейти к справке.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Pero,
Код:
#include <Array.au3>

Local $s_File = @ScriptDir & '\txt.txt', $a_Tmp, $a_Res[1]

$a_Tmp = StringSplit(StringRegExpReplace(StringStripCR(FileRead($s_File)), '\n\s*$', ''), @LF & ';')
If Mod($a_Tmp[0], 2) Then Exit 13
ReDim $a_Res[$a_Tmp[0] / 2 + 1][2]
For $i = 1 To $a_Tmp[0] Step 2
	$a_Res[0][0] += 1
	For $j = 0 To 1
		$a_Res[$a_Res[0][0]][$j] = $a_Tmp[$i + $j]
	Next
Next
$a_Tmp = 0
_ArrayDisplay($a_Res)
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Код:
#include <File.au3>

Local $aArray
_FileReadToArray( "test.txt", $aArray, $FRTA_COUNT, ";" )

_ArrayDisplay( $aArray )


Единственное - I и J в результате будут отражены( вернее - у вас они отражены, а тут нет ), в любом случае не вижу в этом проблемы.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Ещё вариант.
Код:
#include <Array.au3>

$oConnection = ObjCreate("ADODB.Connection")
$oRecordSet = ObjCreate("ADODB.Recordset")

$sPath = @ScriptDir & "\"
$sFile = "myfile.txt"

$oConnection.Open(StringFormat('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Extended Properties="text;HDR=NO;FMT=Delimited"', $sPath))
$oRecordSet.Open(StringFormat("SELECT * FROM %s", $sFile), $oConnection, 3, 3, 1)

Dim $aData[$oRecordSet.RecordCount][$oRecordSet.Fields.Count]

For $i = 0 To $oRecordSet.RecordCount - 1
   For $j = 0 To $oRecordSet.Fields.Count - 1
	  $aData[$i][$j] = $oRecordSet.Fields($j).Value
   Next
   $oRecordSet.MoveNext
Next

_ArrayDisplay($aData)

$oRecordSet.Close
$oRecordSet = 0
$oConnection = 0
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Garrett [?]
У меня не отображается последнее значение (56u65u4y6546), файл myfile.txt:
Код:
rgoekpewpegmkpmk;3543763523536
efreg4t453y435t54;56u65u4y6546
Другие варианты текста работают без проблем. Почему именно с этим текстом не работает? Не понимаю. :shok:
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Pero [?]
Хай умные дяди и тети
Хай , брателло.
если ты еще не разобрался как читать из файла, то значит ты даже близко к справке не подходил
Как то , через губу выплеван вопрос темы. так что суньте свой нос в справку и разок ее перелистните, или поиск на форуме
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
madmasles [?]
У меня не отображается последнее значение
Добавьте файл schema.ini в папку где расположен myfile.txt

schema.ini
Код:
[myfile.txt]
Format=Delimited(;)
ColNameHeader=False
MaxScanRows=0
CharacterSet=ANSI
Col1=Column1 Text
Col2=Column2 Text

Код:
#include <Array.au3>

$oConnection = ObjCreate("ADODB.Connection")
$oRecordSet = ObjCreate("ADODB.Recordset")

$i = 0
$sPath = @ScriptDir & "\"
$sFile = "myfile.txt"

$oConnection.Open(StringFormat('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Extended Properties="text;"', $sPath))
$oRecordSet.Open(StringFormat("SELECT * FROM %s", $sFile), $oConnection, 3, 3, 1)

Dim $aData[$oRecordSet.RecordCount][$oRecordSet.Fields.Count]

While Not $oRecordSet.EOF
   $aData[$i][0] = $oRecordSet.Fields('Column1').Value
   $aData[$i][1] = $oRecordSet.Fields('Column2').Value
   $oRecordSet.MoveNext
   $i += 1
WEnd

_ArrayDisplay($aData)

$oRecordSet.Close
$oConnection.Close


P.S. Надо будет проштудировать документацию ADO, зацепил он меня :smile:
 
Верх