Подскажите, как создать "безразмерный" массив? Покажу проблему на своем примере при создании функции записи данных в файл:
За пределами фунции start() сначала создаю 2 динамических массива: double Array1[]; string Array2[];
Далее код функции примерно выглядит так:
Код void CreateCSVFile() { int ArraySize = 1000; //размер массива ArrayResize(Array1, ArraySize); //устанавливаем размер массивов ArrayResize(Array2, ArraySize);
if(CSVFileCreate) //создаем CSV-файл { Array1 [Counter]= Result; //Переменные Counter и Result расчитываются внутри start() if(Array1[Counter]==1) Array2 [Counter]= "A"; if(Array1[Counter]==0) Array2 [Counter]= "B";
if (Counter>0) { //Блок открытия файла ResetLastError();
if(Flag) //Переменная Flag расчитывается внутри start() { CSVFileName = CSVFileFolder+"\\"+Symbol()+".csv"; Flag = false; }
FileHandle = FileOpen(CSVFileName, FILE_WRITE|FILE_CSV, ";");
//Блок записи в файл if(FileHandle!=INVALID_HANDLE) { FileWrite(FileHandle, ...); for(int i=1;i<=Counter;i++) { FileWrite(FileHandle, i, Array2); }
FileClose(FileHandle); } else Print("Операция FileOpen неудачна, ошибка ",GetLastError()); } } } После превышения 1000 (=ArraySize) записей в файл через переменную Array2, соответственно, выходит ошибка "Array out of Range". Поэтому, появляется задача, как придумать алгоритм, чтобы обойти это ограничение на задание конечного размера массива и сделать массив как бы "безразмерным".
Что-то слышал о том, что в некоторые языках есть специальные для этого случая функции, типа, "Append Array", которые решают проблему безразмерного массива, но в MQL4 такой специальной функции нет.
Есть еще такая идея, что можно было бы при задании конечного размера массива как-то выгружать из памяти ArraySize данных, сохраняя их в файле, и заново запускать этот массив того же размера ArraySize с продолжением нумерации (т.е. от 1001 до 2000). Когда размер этого массива превысит размер 2000, то опять выгружаем из памяти ArraySize данных, сохраняя их в файле, и заново запускаем массив с размером ArraySize, и т.д. Получается цикл из записи и выгрузки данных.
Может быть у кого-то есть практическое решение данной проблемы с созданием "безразмерного" массива? Не пойму пока, как реализовать в коде хотя бы ту идею, которую выше изложил ...
|