В документации читаю - после записи в файл добавляется признак
конца строки "\r\n". Открывал csv файл с помощью "эксель",
"блокнот", промывал глаза, полоскал горло, а "\r\n" так
и не увидел. Может не там смотрел?
- EURUSD - Тенденции, прогнозы и следствия (Часть №1)
- Чтение файла
- Как разбить строку...
Браво. Классический участник форума MQL4 ....
Впрочем, кодам символов в документации уделено мало внимания.
В MQL4 некоторые символы имеют специальное обозначение как в языке C.
"\r" и "\n" - это служебные символы и не отображаются тексторыми редакторами, а служат для форматирования текста.
"\r" это символ длиной 1 байт с кодом 13 или \x0d.
"\n" это символ длиной 1 байт с кодом 10 или \x0a.
Функция форматирования текста:
"\r" - возврат каретки (печатной машинки).
"\n" - перевод строки (печатной машинки).
Впрочем, кодам символов в документации уделено мало внимания.
В 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:
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь