Проблема загрузки данных из csv файла - страница 2

 

кстати про CSV. Если SQLite используется из DLL, то к всяким CSV данным можно обращаться как с обычными таблицами. Не знаю правда допустима ли такая фича из встроенного SQLite

https://www.sqlite.org/csv.html

тогда довольно-таки корявый код 

            if (StartReadTime>Starttime) {
		// тут читается ячейка данных	
            }

"уходит" в WHERE запрос и условий там может быть много разных. 

SELECT time,oi,di FROM mydata WHERE time>starttime

 
Aleksey Vyazmikin #:

Попробуйте для работы с csv файлами использовать класс CSV fast.mqh , который можно взять тут - этот класс я использую постоянно и очень доволен!

Там всё описано на русском языке, в моей статье есть примеры по использованию - всё продумано для применения в МО.

Благодарю, посмотрю что за зверь!
 
Mihail Marchukajtes:

Приветствую господа трейдеры. Ломаю голову уже не один час но так и не могу понять в чём ошибка при загрузке данных из файла КСВ с разделителем точка запятой?

Собственно функция :

Как из ней видно она читает файл в котором есть три столбца разделённых точка с запятой. Данные в файле есть и упорядочены. То есть в файле три одинаковых столбца данных. Дата, ОИ и Дельта. Однако при считывании файла данные из среднего столбца постоянно нулевые. То есть читается только первый столбец и последний. Сколько бы не ломал голову никак не могу понять что не так? Помогите, вроде и код простенький и предельно понятный но факт. НЕ РАБОТАЕТ!!! Может я чего то не знаю? Заранее благодарю!!!!

Зачем так сложно то? Структура файла известна? Да. Так и читайте сразу все три столбца:

for(int a=0; a<5 && !IsStopped(); a++)
   {

      int h=FileOpen("OpenI\\"+Name_File1,FILE_READ|FILE_ANSI|FILE_CSV|FILE_COMMON,";");
      if(h==INVALID_HANDLE)
      {
         printf("Ошибка открытия файла для чтения %s # %i",Name_File1,GetLastError());
         return false;
      }
      else
      {
         ResetLastError();
         int line=0;
         while(!FileIsEnding(h))
         {
            ArrayResize(DATA_TMP,line+1,1000);
            DATA_TMP[line].time = StringToTime(FileReadString(h));       
            DATA_TMP[line].oi = StringToDouble(FileReadString(h));       
            DATA_TMP[line].dl = StringToDouble(FileReadString(h));       
            line++;
         }
         FileClose(h);
      break;
      }
   }
 
Mihail Marchukajtes #:
Благодарю, посмотрю что за зверь!

Будут вопросы - спрашиваете.