Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Чтение данных из файла в массив (https://javascript.ru/forum/misc/63578-chtenie-dannykh-iz-fajjla-v-massiv.html)

TheSingleElk 16.06.2016 00:47

Чтение данных из файла в массив
 
Доброго времени суток.
Имею проблему: пишу обработку данных для специализированного софта (это ПО поддерживает автоматизацию через написание скриптов на JavaScript). Хочу прочитать данные из файла в массив. обращение к файлу происходит так:
var oDmFile = new ActiveXObject("DmFile.DmTableADO");


далее в цикле идёт считывание данных в массив из файла, представляющего собой таблицу во внутреннем формате ПО. причём, каждый элемент создаваемого массива - сам по себе массив. делаю следующее:

var Source=[];//рабочий массив - сюда должны писаться данные из файла
var tmpArray=[0,0,0];//временный массив, нужен только для объяснения, что каждый член массива Source - массив
oDmFile.Open("tmp1.dm", true);//открываю файл
var num = oDmFile.GetRowCount();//определяю количество записей
for (i=1;i<=num;i++)
{
	Source[i]=tmpArray;//объясняю, что текущий элемент рабочего массва - массив
	Source[i][0]=oDmFile.GetNamedColumn(BodyName);//читаю из файла данных содержимое текущей строки и столбца BodyName
	Source[i][1]=oDmFile.GetNamedColumn(IndName);//читаю из файла данных содержимое текущей строки и столбца IndName
	Source[i][2]=oDmFile.GetNamedColumn("ABMSKO");//читаю из файла данных содержимое текущей строки и столбца ABMSKO
		if (i<num) {oDmFile.MoveNext()}//передвигаюсь на следующую строку в файле
	}
oDmFile.Close();//закрываю файл


проблема заключается в том, что при считывании второй записи и создании второго элемента массива первый элемент массива становится равным второму, при считывании третьей строки и создании третьего элемента массива первые два превращаются в третий и т.д. то есть, на выходе я имею массив идентичных элементов, равных последнему элементу массива. что я делаю не так?

pureJS 16.06.2016 00:55

TheSingleElk, попытайся так:
Source[i] = []; //объясняю, что текущий элемент рабочего массва - массив

TheSingleElk 16.06.2016 01:09

Цитата:

Сообщение от pureJS
попытайся так:

pureJS, огромное спасибо. помогло (хотя и похоже на шаманство :) )


Часовой пояс GMT +3, время: 05:32.