Помогите разобраться с файловыми операциями..

 

Начал немного осваивать C#, пишу в .csv файл цену и время вот так:

 StreamWriter writeCsv = new StreamWriter("H:/file.csv", false, System.Text.Encoding.GetEncoding(1251));
 writeCsv.Write("{0:0.00}", median.ToString() + ";" + localDate.ToString());
 writeCsv.Close();

 В файле отображается вот такая вот инфа: 

1,13634 20.04.2016 14:42

Потом читаю файл советником 

double price;
datetime time;
   
   int hnd=FileOpen("file.csv",FILE_WRITE|FILE_READ|FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_COMMON|FILE_CSV);
   FileSeek(hnd,-1,SEEK_SET);
   price=FileReadDouble(hnd);
   time=FileReadDatetime(hnd);
   FileClose(hnd);
   
 Print(price, " ", time);

 Он мне выдает вот такое:

   0.0 2016.04.20 00:00:00

Пробовал с бинарными файлами и тхт, тоже неправильно выводит.  На пути не смотрите, советник видит нужную директорию.

 
Вместо FileReadDouble для текстового файла используйте FileReadNumber
 
Vladimir Kazakov:
Вместо FileReadDouble для текстового файла используйте FileReadNumber
не помогает, то же самое выдает :) я уже думаю может с кодировкой что-то не так, но я в них вообще не шарю... Потому что аналогичные записи, но сделанные непосредственно советником, читаются правильно, а сишарповские нет..
 

FileSeek непонятно зачем здесь?

Разделитель полей по умолчанию д.б табуляция (или указать другой при открытии файла)

hnd надо проверить - может файл не открывается?

 
Исползуйте FileReadString() 
 
Vladimir Kazakov:

FileSeek непонятно зачем здесь?

Разделитель полей по умолчанию д.б табуляция (или указать другой при открытии файла)

hnd надо проверить - может файл не открывается?

так, сейчас все проверю еще.. просто сутки просидел котелок не варит :) файлсик это если файл не закрывать, из другого кода скопировал просто. Хэндл проверил, открывается, разделитель ;
 
Dmitry Fedoseev:
Исползуйте FileReadString() 
так вроде читает, а почему? ) Т.е. я не понимаю как m4 может писать в формат дабл, а сишарп только в строки
 
Maxim Dmitrievsky:
так вроде читает, а почему? ) Т.е. я не понимаю как m4 может писать в формат дабл, а сишарп только в строки
Чтобы писать даблы и инты, надо открывать файл в бинарном режиме. В какой режиме писали, в таком и читать надо. В C# была записано строка в текстовом режиме, значит и читать надо строку.
 

Разделитель десятичных разрядов еще д.б. точка

 
Dmitry Fedoseev:
Чтобы писать даблы и инты, надо открывать файл в бинарном режиме. В какой режиме писали, в таком и читать надо. В C# была записано строка в текстовом режиме, значит и читать надо строку.
а как из мт4 пишется и читается csv в формат double? значит можно сделать что бы через риддабл все-таки читал сишарповские записи?
 
Vladimir Kazakov:

Разделитель десятичных разрядов еще д.б. точка

да, верно, перезрузил метод 

writeCsv.Write(median.ToString("0.00000") + ";" + localDate.ToString());

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

а readNumber возвращает теперь 1.0 почему-то, вместо всей цены, т.е. знак перед разделителем что-ли