В csv нет стрингов, даблов, интов. В csv есть строки и поля через разделитель.
При открытии файла указывать разделитель, похоже в этом файле разделитель "\t". Дальше читать поля функцией FileReadString(). Еще пригодятся функции FileIsEnding(), FileIsLineEnding(), чтобы знать когда будет прочитат весь файл и отдельная строка.
В csv нет стрингов, даблов, интов. В csv есть строки и поля через разделитель.
При открытии файла указывать разделитель, похоже в этом файле разделитель "\t". Дальше читать поля функцией FileReadString(). Еще пригодятся функции FileIsEnding(), FileIsLineEnding(), чтобы знать когда будет прочитат весь файл и отдельная строка.
спасибо Дмитрий за подсказку!
Начал так:
int handle=FileOpen("Acc"+DY+".csv",FILE_READ|FILE_CSV); string STR;
while(!FileIsEnding(handle) ){
STR=FileReadString(handle);
}FileClose(handle);Print(STR);
Печатает последнее значение строки, но на экран почему-то не выводит. (может нужно тип значения изменить на другой??)
Дмитрий, помогите плиз в семь различных переменных залить значения из одной строки CSV файла, состоящей из 7-ми полей. (и какого типа должны быть переменные?)
Заранее благодарю!
int h=FileOpen("1.txt",FILE_CSV|FILE_READ,"\t"); string Data[10][10]; int Field=0; int Line=0; while(!FileIsEnding(h) && !IsStopped()){ Data[Line][Field]=FileReadString(h); Field++; if(FileIsLineEnding(h)){ Field=0; Line++; } } Alert(Data[0][0]," ",Data[0][1]," ",Data[0][2]); Alert(Data[1][0]," ",Data[1][1]," ",Data[1][2]); Alert(Data[2][0]," ",Data[2][1]," ",Data[2][2]); FileClose(h);В приложении файл.
Спасибо Дмитрий огромное!!
Все выводит алертом и печатает с пом. Print, НО .... Data[0][0] содержит всю первую строку со всеми полями!!! а не одно первое поле CSV файла. А как вывести значение одной строки отдельно по полям?
Подскажите излечение беды)
Благодарю заранее!!
Покажите файлик. Весь не надо. От начала несколько строк.
Всем доброго времени суток!
Дмитрий, вопрос к вам наверно))...Скрипт, который вы написали, рабочий (использую ваш же файл для тестирования и проверки: 1.txt)...но у меня не выводит значения по Alert() или по Print(). Выдает пустые значения (равно нолю) !
До этого проверял множество других скриптов...и сам писал кое-что...результат один и тот же...выводит на печать в журнал пустые значения(ноль или 0.00000, если используется DoubleToStr(...,5))
В чем может быть проблема? Может в терминале/эдиторе (что очень сомнительно)? Билд метаэдитора 914, терминала 625 (Alpari) .
Буду очень благодарен за ответ! Спасибо!
Всем доброго времени суток!
Дмитрий, вопрос к вам наверно))...Скрипт, который вы написали, рабочий (использую ваш же файл для тестирования и проверки: 1.txt)...но у меня не выводит значения по Alert() или по Print(). Выдает пустые значения (равно нолю) !
До этого проверял множество других скриптов...и сам писал кое-что...результат один и тот же...выводит на печать в журнал пустые значения(ноль или 0.00000, если используется DoubleToStr(...,5))
В чем может быть проблема? Может в терминале/эдиторе (что очень сомнительно)? Билд метаэдитора 914, терминала 625 (Alpari) .
Буду очень благодарен за ответ! Спасибо!
Может файл на там.
После первой строчки:
int h=FileOpen("1.txt",FILE_CSV|FILE_READ,"\t");
можно посмотреть чему равно h.
Alert("h="+h);или
Print("h="+h);Если -1, значит файл не там, где надо.
Print("h="+h); выдает предупреждение implicit conversion...но Print("h=",h); действительно, возвращает -1.
Всё значит еще выходит банальней))) Терминал в марте обновился. Теперь все файлы хранятся видимо в \MQL4\Files\ а не в \experts\files\
Мда...внимательней мне стоит быть, чудес-то как всегда не бывает. Убил кучу времени с проверкой кода)))
Спасибо за помощь!
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Помогите пожалуйста разобраться, как прочитать данные из CSV файла:
Данные одной строкой. Тип по порядку: string / integer / double / double / double / double / double /
Начал так: int handle=FileOpen("Acc2.csv",FILE_READ|FILE_CSV); а далее......?
Благодарю заранее!