Программирование. Работа с файлом *.csv

[Удален]  

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


Меня интересуют следующие вопросы

  • можно ли уменьшить количество кода
  • можно ли увеличить скорость выполнение
  • есть ли болие элегантные решения

Задача функции: Загрузка файла *.csv, преобразование в массив вида array[i][i1]


Функция:

//+---------------------------------------------------------------------------------+
//| Функция        : CsvArray(string nameFile, string raz, string &line[0][0]);     |
//|                  string nameFile - имя файла                                    |
//|                  string raz - разделитель                                       |
//|                  string line - массив                                           |
//|                                                                                 |
//| Предназначение : Загрузка файла [*.csv] и преобразование в двухмерный массив    |
//|                  array[i][i1] - где [i] номер строки, а [i1] номер позиции      |
//|                  [i1]---                                                        |
//|                  0 - дата вида [гггг.мм.дд]                                     |
//|                  1 - время вида [чч:мм]                                         |
//|                  2 - Открытие число типа [double]                               |
//|                  3 - Максимум число типа [double]                               |
//|                  4 - Минимум число типа [double]                                |
//|                  5 - Закрытие число типа [double]                               |
//|                  6 - Объем число типа [int]                                     |
//+---------------------------------------------------------------------------------+
void CsvArray(string nameFile, string raz, string &line[0][0])
{
// ------------------------
    // Объявление переменных
    int i,count,count2,lineSize;
    string varray[255];
    // Открыть файл CSV для чтение с указателем ","
    int handle = FileOpen(nameFile,FILE_CSV|FILE_READ,raz);
    if(handle == 1)
    {
//+------------------------------------+
//| Узнать количество позиций в строке |
//+------------------------------------+
      while(i != true){
         varray[count] = FileReadString(handle);
         i = FileIsLineEnding(handle);
         lineSize++;
      }
//+----------------------+
//| Обнуление параметров |
//+----------------------+
      FileSeek(handle, 0, SEEK_SET);
      i = false;
//+-----------------------+
//| Собрать массив данных |
//+-----------------------+
      while(i != true){
         if(count2 == lineSize){ // В файле истории семь позиций
            count2 = 0; // Если конец строки то обнуляем второй счетчик
            count++; // Первый счетчик для распределения строк в первом массиме
         }
         line[count][count2] = FileReadString(handle); // Чтение строки до указателя
         count2++; // Второй счетчик для распределения позиций во втором массиве
         i = FileIsEnding(handle); // Листаем строки
      }
    }
    else{Alert("Файл ",nameFile," не обнаружен, последняя ошибка ", GetLastError());} // Если файл не найден вывести сообщение
//+--------------+
//| Закрыть файл |
//+--------------+
   FileClose(handle); // Закрыть файл
// ----------------------------------
}
Файлы:
csvarray.mqh  3 kb