Как прочитать файл CSV С конца и заполнить массив скажем на 10 значений - страница 3

 
Yuriy Asaulenko:

'12.00000000' и '1.08090000', или '7', '15' и '154' количество символов в строке разное. Хотя проблем при конвертации тоже не возникнет. B в CSV такое сплошь и рядом.

В чем был вопрос?

Dmitiry Ananiev:

Вообщем есть файл в который записывается значение баланса с новой строки после закрытия каждого ордера.

То есть тут уже подразумевается сотые значения. Из чего проще приводить к одному количеству символов при записе в файл. Хотя конечно если рассуждать чисто абстрагировано, то даже и в этом случае вполне возможно такое. Нули можно добавлять как впереди, так и в конец (после точки, если целое число, то только спереди). Само значение при этом не измениться.

 
fxsaber:

Решение хорошее но работает только на MQL5.  На четверке нет FileLoad

 
Dmitiry Ananiev:

Решение хорошее но работает только на MQL5.  На четверке нет FileLoad

Там ниже дополнил.

 

Вообщем решение получилось такое: В процесе создания файла в начале числа в файле ставим $ в конце #. 

И далее - извлекаем с конца: 


void OnTick()
  {
   int y=0;
   string st = "";
   double gBal[10];
   int handle= FileOpen(_Symbol+"_"+(string)mag+".csv",FILE_CSV|FILE_READ|FILE_SHARE_READ);
   for(int i =0; y<10;i--)
     {
      FileSeek(handle,i,SEEK_END);
      string str=FileReadString(handle,20);
      if (StringFind(str,"$")==0)
        {
         str=StringSubstr(str,1,StringLen(str)-2);
         gBal[y] = StringToDouble(str);
         y++;
        }
     }
   FileClose(handle);
   Print (gBal[0],"  ",gBal[1],"  ",gBal[2],"  ",gBal[3],"  ",gBal[4],"  ",gBal[5],"  ",gBal[6]);

  }
 
Dmitiry Ananiev:

Вообщем решение получилось такое: В процесе создания файла в начале числа в файле ставим $ в конце #. 

И далее - извлекаем с конца: 


У вас уже разделитель "," есть. Число от одной запятой до следующей. Или это вместо запятой? Тогда зачем?

 
Yuriy Asaulenko:

У вас уже разделитель "," есть число от одной запятой до следующей. Или это вместо запятой? Тогда зачем?

нет разделителя в виде ",".

числа в файле - значения баланса. В файле это выглядит вот так : 

352.28
1458.02
587.54
658.89 

и т.д.

 
Dmitiry Ananiev:

нет разделителя в виде ",".

числа в файле - значения баланса. В файле это выглядит вот так : 

352.28
1458.02
587.54
658.89 

и т.д.

Тогда переноса строки достаточно и другие разделители не нужны.

 
Dmitiry Ananiev:

нет разделителя в виде ",".

числа в файле - значения баланса. В файле это выглядит вот так : 

352.28
1458.02
587.54
658.89 

и т.д.

С конца файла считываем по 4 килобайта данных, анализируем каждый считанный блок посимвольно, тоже с конца. По переносам строк определяем сами строки. Перенос(завершение) строки может состоять из двух символов, они имеют коды 10 и 13. Всё делается).

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