CSV файл

 
В документации читаю - после записи в файл добавляется признак конца строки "\r\n". Открывал csv файл с помощью "эксель", "блокнот", промывал глаза, полоскал горло, а "\r\n" так и не увидел. Может не там смотрел?
 
Браво. Классический участник форума MQL4 ....
Впрочем, кодам символов в документации уделено мало внимания.
В MQL4 некоторые символы имеют специальное обозначение как в языке C.
"\r" и "\n" - это служебные символы и не отображаются тексторыми редакторами, а служат для форматирования текста.

"\r" это символ длиной 1 байт с кодом 13 или \x0d.
"\n" это символ длиной 1 байт с кодом 10 или \x0a.

Функция форматирования текста:
"\r" - возврат каретки (печатной машинки).
"\n" - перевод строки (печатной машинки).
 

1. Тоесть, если у меня в строке 10 символов включая пробелы, то чтобы переместить файловый указатель в начало следующей строки, его нужно передвинуть на 12 байт (10 видимых + 2 невидимых). Правильно?

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

 

Когда читаеш 1 строка, MQL считывает всех символов, пока найдет загадочные \r\n. Так он понимает, что дошел до конца строки. Вот и все.

Прежде, чем учить MQL, все таки нужно почитать немного С...

 
1. И все таки так и не понял как перемещать файловый указатель. Допустим у меня в csv файле в каждой строке записано по 2 значения с разделителем. Чтобы переместить файловый указатель в начало четвертой строки мне нужно в цикле 6 раз прочитать число ф-ией . Правильно?
for(x=1; x<=6; x++)
  {
   FileReadNumber(handle);
  }
2. И второй вопрос. Почему в этом эксперте ф-ия FileWrite не записывает буквы в файл? Когда убираю цикл буквы записываются.
int start()
  {
   static int i;
   int x, handle;
   if(i<1)
     {
      handle=FileOpen("files1.csv",FILE_CSV|FILE_WRITE|FILE_READ,';');
      FileSeek(handle,0,SEEK_SET);
      for(x=1; x<=6; x++)
        {
         FileReadNumber(handle);
        }
      FileWrite(handle,"ABCD");
      FileClose(handle);
      i++;
     }
  }
 
int start()
  {
   int Handle1, Handle2;
   string A, B;
   
   Handle1=FileOpen(Symbol()+".csv",FILE_CSV|FILE_READ,';');
   Handle2=FileOpen(Symbol()+"new"+".csv",FILE_CSV|FILE_WRITE|FILE_READ,';');
   FileSeek(Handle1,0,SEEK_SET);
   FileSeek(Handle2,0,SEEK_SET);
   
   while(true)
     {
      if(FileIsEnding(Handle1)) break;
      A=FileReadString(Handle1);
      if(A=="--------------------------Connection lost  " || A=="--------------------------Expert was stoped") continue;
      B=FileReadString(Handle1);
      FileWrite(Handle2,A,B);
      continue;
     }
     
   FileClose(Handle1);
   FileClose(Handle2);
   return(0);
  }
Скрипт должен переписывать данные из одного csv файла, в другой, удаляя некоторые строки. В конце нового файла появляется ";" - где ошибка? Файл открывал через "блокнот".

файл 1:


файл 2:
Причина обращения: