Ошибки, баги, вопросы - страница 898

 

lazarev-d-m:

Yedelkin: 

sergeev: у файла разве есть строки?  

FILE_LINE_END

Получение признака конца строки

 

Я более или менее разобрался, терминал воспринимает csv файл не как таблицу, а как обычный файл где все переменные выстроены в строчку, и отделены разделителем, и чтобы в нем ориентироваться как в таблице, я написал небольшой скрипт-пример по работе с csv, как с таблицей, с точки зрения человека, как бы странно это не звучало, сегодня/завтра скину в CodeBase, думаю многим будет интересно 

 lazarev-d-m, моё сообщение - не для Вас. Персонально для Сергеева.
 
Yedelkin:
 

FILE_LINE_END

Получение признака конца строки

вам я ничего не скажу. вы и так умный. 

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

Управляющие символы — Википедия
  • ru.wikipedia.org
Управля́ющие си́мволы — элементы данной кодировки, которым не приписано графическое представление, но которые используются для управления устройствами, организации передачи данных и других целей. Сейчас для этих целей применяются форматы файлов, языки управления устройствами (такие как Postscript) и сетевые протоколы. Поэтому многие...
 
lazarev-d-m:

Я более или менее разобрался, терминал воспринимает csv файл не как таблицу, а как обычный файл где все переменные выстроены в строчку, и отделены разделителем

он воспринимает не только csv так, но и вообще все, что файл.
 

lazarev-d-m:

надо придумать механизм перебора строк,

у файла есть строки? как вы обозначаете новую строку? (намекаю на спец символ :)

предствьте что файл - это одномерный массив символов.

как в этом массиве найти "новую строку"?

 

 

FILE_LINE_END

Получение признака конца строки

sergeev вам я ничего не скажу. вы и так умный.  и понимаете что у файла есть управляющие символы в его линейном отображении. для того, чтоб какие то просмоторщики его содержимого показывали его по общепризнанным правилам. 
 :) Будем считать, что ответы на вопросы "что такое новая строчка файла? у файла разве есть строки?" Вы получили. Ответ с Вашей стороны и не предполагался.
 
Yedelkin:
 :) Будем считать, что ответы на вопросы "что такое новая строчка файла? у файла разве есть строки?" Вы получили. Ответ с Вашей стороны и не предполагался.

все дело в используемых понятиях и восприятии этих понятий.

что есть "новая строка" в файле?  Это и пытаюсь узнать у lazarev-d-m, если дождусь ответ, то в случае чего подкорректирую и объясню понятие по правильному. И потом направлю на решение задачи.

а пока я не знаю что представляет себе lazarev-d-m когда спрашивает про "новую строку". и не могу дать ответ как её найти. Он знает и FileSeek и FileIsLineEnding и FileRead. Но похоже не знает зачем они.

понятно в его случае найти какой то символ можно только лишь перебором. но понимает ли он что новая строка это просто символ - не знаю.

 
sergeevвсе дело в используемых понятиях и восприятии этих понятий. что есть "новая строка" в файле?  Это и пытаюсь узнать у lazarev-d-m, если дождусь ответ, то в случае чего подкорректирую и объясню понятие по правильному. И потом направлю на решение задачи. а пока я не знаю что представляет себе lazarev-d-m когда спрашивает про "новую строку". и не могу дать ответ как её найти. Он знает и FileSeek и FileIsLineEnding и FileRead. Но похоже не знает зачем они. понятно в его случае найти какой то символ можно только лишь перебором. но понимает ли он что новая строка это просто символ - не знаю.  

 Всё дело в том, что этот форум - форум MQL5сообщества. А язык MQL5 подразумевает такое понятие, как "признак конца строки файла":

FILE_LINE_END

Получение признака конца строки

Поэтому вопрос Лазарева - аПсалютнА кАрректен. Абсолютно корректен в рамках MQL5сообщества.

 
Yedelkin:

 Всё дело в том, что этот форум - форум MQL5сообщества. А язык MQL5 подразумевает такое понятие, как "признак конца строки файла":

Вопрос - скажите, а какие числа делятся на два?

Ответ - все.

Мораль - не путайте конец и то что надо lazarev-d-m

 
sergeev: Вопрос - скажите, а какие числа делятся на два? Ответ - все.  Мораль - не путайте конец и то что надо lazarev-d-m
 Ага. Ответ на свой вопрос "у файла разве есть строки?" Вы уже получили. Теперь сравниваете конец и потребности Лазарева. :)
 
sergeev:

Вопрос - скажите, а какие числа делятся на два?

Ответ - все.

Мораль - не путайте конец и то что надо lazarev-d-m

Я понял что есть способы определения отдельной строки, но нет отдельной команды по обращению к ней, нужно пересчитать кол-во символов разделителей строк, чтобы дойти до нужной строки (если известен "номер" строки)

Либо мой вариант, сканировать файл построчно, что тоже капец как не удобно, особенно с большими файлами, где могут быть сотни строк, а если вдруг столкнуться с этим в тестере, то вообще караул.

Вот как сдеал я, работает криво, освобожусь - подправлю

MqlDateTime mqldt;
string qwerty="EURUSD";
int filehandle;

void OnStart()
  {
   filehandle=FileOpen("News.csv",FILE_READ|FILE_CSV|FILE_ANSI,';');
   uint column1=FileReadInteger(filehandle);//Code
   string column2=FileReadString(filehandle);//Symbol
   uint column3=FileReadInteger(filehandle);//Year
   uint column4=FileReadInteger(filehandle);//Month
   uint column5=FileReadInteger(filehandle);//Day
   uint column6=FileReadInteger(filehandle);//Hour
   uint column7=FileReadInteger(filehandle);//Minute
   while(column2!=qwerty&&column3!=mqldt.year&&column4!=mqldt.mon&&column5!=mqldt.day&&column6!=mqldt.hour)
     {
   column1=FileReadString(filehandle);//Code
   column2=FileReadString(filehandle);//Symbol
   column3=FileReadInteger(filehandle);//Year
   column4=FileReadInteger(filehandle);//Month
   column5=FileReadInteger(filehandle);//Day
   column6=FileReadInteger(filehandle);//Hour
   column7=FileReadInteger(filehandle);//Minute
     }
   Alert("Искомое находится в ",column1,"-й строчке");
  }
Сейчас постоянно возвращает column1=Code, а должен возвращать номер строки, в которой совпадает значение часа с текущим временем, думаю это из кода понятно
Причина обращения: