Весь файл можно только первый раз читать. При этом запомнить позицию 10-й с конца строки, при следующем прочтении с нее начинать. Тут кольцевой массив пригодится.
Согласен, недостаток есть. Если файл большой. Можно с конца читать, но уже работать с байтами
Что и предлагаю. Прочитать чуть больше последней строки. В общем случае, если нужно неск строк, то все аналогично.
У меня сейчас CSV 55 тыщ строк. Вот как прочитать последние 5 строк? L=l*5. Скажем l=~200 байт в строке. Передвигаем от конца на 1100 байт и читаем до конца файла.
Что и предлагаю. Прочитать чуть больше последней строки. В общем случае, если нужно неск строк, то все аналогично.
У меня сейчас CSV 55 тыщ строк. Вот как прочитать последние 5 строк? L=l*5. Скажем ~200 байт в строке. Передвигаем от конца на 1100 байт и читаем до конца файла.
Да, отличный вариант. Полностью согласен.
Тогда моем коде просто поменять куда ставить курсор
//Читаем из файла FileSeek(filehandleZ,-1,SEEK_SET); //вот тут поменять типа FileSeek(filehandleZ,-1000(примерно),SEEK_END)string Slast;
string Spred;
while(FileIsEnding(filehandleZ)==false) // До тех пор, пока файловый указатель не в конце файла
{
Spred=Slast;
Slast=FileReadString(filehandleZ);
}
А если в строках не по 200 символов а от 4 до 15 ?
Берем, что строка 15 символов. Но это еще не байты.) Кстати, прочитать в один прием лишние 1-2 тыщ байтов, быстрее чем файл перебирать. А спарсить - это вообще минимум ресурсов.
А если в строках не по 200 символов а от 4 до 15 ?
перед записью приводите строку к одному количеству символов. К примеру 0001.00, 0215.00 и 1374.01 совершенно идентичны по количеству символов. И при переводе в StringToDouble проблем не возникнет. Тогда будете точно знать количество символов в строке.
перед записью приводите строку к одному количеству символов. К примеру 0001.00, 0215.00 и 1374.01 совершенно идентичны по количеству символов. И при переводе в StringToDouble проблем не возникнет. Тогда будете точно знать количество символов в строке.
'12.00000000' и '1.08090000', или '7', '15' и '154' количество символов в строке разное. Хотя проблем при конвертации тоже не возникнет. B в CSV такое сплошь и рядом.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Угу, весь файл читать. Медленнее не придумаешь. Оч. дорого.
Согласен, недостаток есть. Если файл большой. Можно с конца читать, но уже работать с байтами
Согласен, недостаток есть. Если файл большой. Можно с конца читать, но уже работать с байтами
Что и предлагаю. Прочитать чуть больше последней строки. В общем случае, если нужно неск строк, то все аналогично.
У меня сейчас CSV 55 тыщ строк. Вот как прочитать последние 5 строк? L=l*5. Скажем l=~200 байт в строке. Передвигаем от конца на 1100 байт и читаем до конца файла.
Что и предлагаю. Прочитать чуть больше последней строки. В общем случае, если нужно неск строк, то все аналогично.
У меня сейчас CSV 55 тыщ строк. Вот как прочитать последние 5 строк? L=l*5. Скажем ~200 байт в строке. Передвигаем от конца на 1100 байт и читаем до конца файла.
Да, отличный вариант. Полностью согласен.
Тогда моем коде просто поменять куда ставить курсор
Да, отличный вариант. Полностью согласен.
А если в строках не по 200 символов а от 4 до 15 ?
А если в строках не по 200 символов а от 4 до 15 ?
UTF-8 может иметь либо 2, либо 3 байта на символ Unicode - так говорит гугл.
Исходя из этого посчитать. Тут же примерно надо посчитать, с точностью до байта нафик не надо. Лучше с запасом
А если в строках не по 200 символов а от 4 до 15 ?
Берем, что строка 15 символов. Но это еще не байты.) Кстати, прочитать в один прием лишние 1-2 тыщ байтов, быстрее чем файл перебирать. А спарсить - это вообще минимум ресурсов.
А если в строках не по 200 символов а от 4 до 15 ?
перед записью приводите строку к одному количеству символов. К примеру 0001.00, 0215.00 и 1374.01 совершенно идентичны по количеству символов. И при переводе в StringToDouble проблем не возникнет. Тогда будете точно знать количество символов в строке.
перед записью приводите строку к одному количеству символов. К примеру 0001.00, 0215.00 и 1374.01 совершенно идентичны по количеству символов. И при переводе в StringToDouble проблем не возникнет. Тогда будете точно знать количество символов в строке.
'12.00000000' и '1.08090000', или '7', '15' и '154' количество символов в строке разное. Хотя проблем при конвертации тоже не возникнет. B в CSV такое сплошь и рядом.
Размер строк разный.
Может кто сталкивался с изящным и экономным решением ?
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
fxsaber, 2018.04.06 17:08
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql4, тонкости и приёмы работы
fxsaber, 2018.01.30 14:51
MT5-функции для кроссплатформенности