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

 

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

Нужно взять в массив последние 10 значений . 
Как это сделать проще всего ? 

Пробовал посчитать количество строк из файла и потом брать.  но что -то не получается. Наверяка есть спосооб считывать файл с конца построчно. Как это сделать ? 

 
Dmitiry Ananiev:

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

Нужно взять в массив последние 10 значений . 
Как это сделать проще всего ? 

Пробовал посчитать количество строк из файла и потом брать.  но что -то не получается. Наверяка есть спосооб считывать файл с конца построчно. Как это сделать ? 

"считывать файл с конца построчно" никогда не встречал. Но, зная размер памяти занимаемый одной строкой можно от конца файла переместить указатель на 10 строк и начать чтение.
 
Считаете по макс сколько в строке байт. Ставите указатель на конец файла . Перемещаете указатель к началу на найденное ранее число байт + небольшой запас. Считываете до конца файла. Далее все обрабатываете программно.
 

Нет. SEEK_END и никакого запаса.

Документация по MQL5: Файловые операции / FileSeek
Документация по MQL5: Файловые операции / FileSeek
  • www.mql5.com
//|                                                Demo_FileSeek.mq5 | //|                        Copyright 2013, MetaQuotes Software Corp. | //|                                              https://www.mql5.com | //| Script program start function                                    |...
 
Alexey Viktorov:

Нет. SEEK_END и никакого запаса.

Реагируете быстрее, чем я пишу.))

 
Alexey Viktorov:
"считывать файл с конца построчно" никогда не встречал. Но, зная размер памяти занимаемый одной строкой можно от конца файла переместить указатель на 10 строк и начать чтение.

Размер строк разный. 
Может кто сталкивался с изящным и экономным решением ? 

 
Dmitiry Ananiev:

Размер строк разный. 
Может кто сталкивался с изящным и экономным решением ? 

Берете макс возможный размер строки.

Кстати, если размер разный, как вы определяете где что и в какой позиции находится?

 
Yuriy Asaulenko:

Берете макс возможный размер строки.

Кстати, если размер разный, как вы определяете где что и в какой позиции находится?

FileReadNumber берет значение полностью и переходит на след. строку.

 

Недавно делал подобное. Но мне надо было 2 строчки снизу читать.

         //Читаем из файла 
         FileSeek(filehandleZ,-1,SEEK_SET); //Ставим курсор в начало файла

         string Slast;
         string Spred;

         while(FileIsEnding(filehandleZ)==false) // До тех пор, пока файловый указатель не в конце файла
           {     
            Spred=Slast;
            Slast=FileReadString(filehandleZ);
           }

На выходе две последние записи записаны в переменные  Slast и Spred. Наверное, не самое лучшее решение, но как есть

 
Evgeniy Zhdan:

Недавно делал подобное. Но мне надо было 2 строчки снизу читать.

На выходе две последние записи записаны в переменные  Slast и Spred. Наверное, не самое лучшее решение, но как есть

Вот это уже больше похоже.

 
Dmitiry Ananiev:

Вот это уже больше похоже.

Угу, весь файл читать. Медленнее не придумаешь. Оч. дорого.