Массив не инициализируется данными

 

Добрый день!

Пожалуйста, помогите разобраться с кодом.

В глобальной области, описываю двухмерный динамически созданный массив, который инициализируется в функции Get_From_file.

Программка читает данные из CSV файла в string data до переноса каретки на другую строку (в файле), а потом копирует их в другие переменные типа string. В конце концов, строковые данные в этих переменных я преобразовываю в тип double(преобразование проходит успешно, (проверял поставив Alert(); в цикле) и записываю в динамически созданный массив, в котором задано количество элементов в первом измерении по количеству строк в файле. Я никак не могу понять, почему у меня массив не инициализируется данными. Данные из файла вытаскиваются удачно, размерность массива соответствует количество записей в файле.

Буду признателен если кто-нибудь поможет. Заранее спасибо!

Вот код.

double Tic_Array [][7];

int Tic_Array_Size;
string file_name = "Текстовый документ.txt";

int Get_From_file (string file_name){

int handle = FileOpen(file_name, FILE_CSV|FILE_READ );

if (handle > 0){

Alert("Файл открыт!");

FileSeek(handle, 0, SEEK_SET);
FileSeek(handle, 0, SEEK_END);

int size = FileTell(handle); // определяю количество строк в файле
ArrayResize(Tic_Array, size);. // определяю размерность массива
ArrayInitialize(Tic_Array, 1); // пытаюсь проин. все элементы 1 -ми

FileSeek(handle, 0, SEEK_SET);
Alert(size);


if (FileSeek(handle, 0, SEEK_SET) == true){



for (Tic_Array_Size = 0; Tic_Array_Size <= size;Tic_Array_Size++){







string data = FileReadString(handle, 1);


string _year = StringSubstr(data, 0, 4);
double year = StrToDouble(_year);


Tic_Array [Tic_Array_Size ][0] = year; // не получается присвоить значение переменной соответствующему элементу маасива

string _month = StringSubstr(data, 5,2);
double month = StrToDouble(_month);

Tic_Array [Tic_Array_Size][1] = month; // не получается присвоить значение переменной соответствующему элементу маасива


string _day = StringSubstr(data, 8, 2);
double day = StrToDouble(day);

Tic_Array [Tic_Array_Size][2] = day; // не получается присвоить значение переменной соответствующему элементу маасива


/*****************************************************************************/



string _hour = StringSubstr(data, 11, 2);
double hour = StrToDouble (_hour);

Tic_Array [Tic_Array_Size][3] = hour; // не получается присвоить значение переменной соответствующему элементу маасива


string _minute = StringSubstr(data, 14, 2);
double minute = StrToDouble (_minute);

Tic_Array [Tic_Array_Size][4] = minute; // не получается присвоить значение переменной соответствующему элементу маасива


string _seconds = StringSubstr(data, 17, 2);
double seconds = StrToDouble (_seconds);

Tic_Array [Tic_Array_Size][5] = seconds; // не получается присвоить значение переменной соответствующему элементу маасива


/*******************************************************************************/
int index = StringFind(data, " ", 22);


string _ask = StringSubstr(data, 22, index-19);
double ask = StrToDouble(_ask);

string _bid = StringSubstr(data, index+3, 6);
double bid = StrToDouble(_bid);



Tic_Array [Tic_Array_Size][6] = ask; // не получается присвоить значение переменной соответствующему элементу маасива



Tic_Array [Tic_Array_Size][7] = bid; // не получается присвоить значение переменной соответствующему элементу маасива









Alert("Загружен ", Tic_Array_Size, " индекс!");

Alert(Tic_Array_Size);

Alert(Tic_Array [Tic_Array_Size][6]);// выдает значение 0, вместо значния переменной bid


}



}else {

Alert("Неудается переместиться в начало, ошибка ", GetLastError()," !" );

}

}else {

Alert("Неудается открыть файл, ошибка ", GetLastError(), " !");

}

if (FileSeek(handle, 0, SEEK_CUR) == FileSeek(handle, 0, SEEK_END)){

Alert("Файл прочитан до конца!");
FileClose(handle);

}else{

Alert("Ошибка, файл НЕ ПРОЧИТАН до конца!");
FileClose(handle);

}




return ;

}


int init()
{
//----

Get_From_file (file_name);




//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+

Вот данные из файла

2010.07.02 21:59:59 1.3366 1.3363
2010.07.02 17:52:10 1.2576 1.2574
2010.07.08 20:58:41 1.268 1.2678
2010.07.08 20:58:41 1.268 1.2678
2010.07.08 20:58:52 1.2679 1.2677
2010.07.08 20:58:53 1.2679 1.2677
2010.07.08 20:58:53 1.268 1.2678
2010.07.08 20:58:54 1.2679 1.2677
2010.07.08 20:58:54 1.268 1.2678
2010.07.08 20:58:56 1.2679 1.2677
2010.07.08 20:58:57 1.268 1.2678
2010.07.08 20:58:58 1.2681 1.2679
2010.07.08 20:58:59 1.268 1.2678
2010.07.08 20:59:02 1.2681 1.2679
2010.07.08 20:59:03 1.2682 1.268
2010.07.08 20:59:05 1.2681 1.2679
2010.07.08 20:59:06 1.2681 1.2679
2010.07.08 20:59:06 1.268 1.2678
2010.07.08 20:59:12 1.2681 1.2679
2010.07.08 20:59:12 1.268 1.2678
2010.07.08 20:59:14 1.268 1.2678
2010.07.08 20:59:15 1.2681 1.2679
2010.07.08 20:59:16 1.268 1.2678
2010.07.08 20:59:18 1.2681 1.2679
2010.07.08 20:59:19 1.268 1.2678

Спасибо!

Файлы:
 

По моему, скобки

ArrayResize(Tic_Array[], size);. // определяю размерность массива
ArrayInitialize(Tic_Array[], 1); // пытаюсь проин. все элементы 1 -ми
 

Добрый вечер!

Спасибо, что откликнулись.

На [] выдает ошибку... да и в учебники тоже функция вызывается с массивом без скобок ( https://docs.mql4.com/ru/array/ArrayResize )

Ну все равно, свежая идея уже хорошо))

Спасибо!

 

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

 
xrust:

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


Доброе утро!

Спасибо большое, все вроде заработало))

Спасибо!

Причина обращения: