Некорректная работа функции FileTell() ...

 

Неправильно работает функция FileTell() - вместо текущей позиции все время показывает конец строки. Для проверки написал небольшой скрипт. Знаю, как нудно копаться в чужом коде, поэтому скрипт упростил до предела. Скрипт читает данные из CSV файла (для простоты в CSV файле всего одна строка):

EURUSD;2010.12.10 22:30;1.3231;1.3232;1.3225;1.3227

Скрипт во вложении. У кого какие соображения по этому поводу?

Файлы:
test1.mq4  2 kb
 

а что собсно изменяешь?

ЗЫ: ты же пере этим прочитал строку, значит указательн стоит в конце строки
 
Что за мода такая пошла... сразу неправильно. Если вы чего-то не понимаете, это не значит, что оно неправильно работает.
 
sanyooooook:

а что собсно изменяешь?

ЗЫ: ты же пере этим прочитал строку, значит указательн стоит в конце строки

Информация в CSV файлах читается только до разделителя, а не до конца строки.
 
   _date = FileReadString(handle)
string FileReadString( int handle, int length=0) 
Функция читает строку с текущей позиции файла. Применяется как к CSV, так и к двоичным файлам. Для текстовых файлов строка будет прочитана до разделителя. 
Для бинарных файлов в строку будет прочитано указанное количество символов.
Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError(). 
Параметры:
handle   -   Файловый описатель, возвращаемый функцией FileOpen(). 
length   -   Количество символов для чтения. 

Пример:
  int handle;
  string str;
  handle=FileOpen("filename.csv", FILE_CSV|FILE_READ);
  if(handle>0)
    {
     str=FileReadString(handle);
     FileClose(handle);
    }

 
укажи длину читаемой строки, а то у тебя каждый раз до конца строки читает
 
FxRoller:

Информация в CSV файлах читается только до разделителя, а не до конца строки.
ну да согласен
 
sanyooooook:
ну да согласен


Ну и к тому же, Comment отображается правильно, значит остается только одно - неправильная работа FileTell.

 

попробуй точку с запятой убрать

   handle = FileOpen("t1.csv", FILE_CSV|FILE_READ, ';');

ЗЫ: странную работу этой функции замечал, может от того что не хотелось признавать свою работу странной )

 

писец... а что ты хотел? -

открыл файл - филетелл = 0

считал строку - Указатель переместился на конец считанной строки... Чего ты хотишь то?

 
Integer:
Что за мода такая пошла... сразу неправильно. Если вы чего-то не понимаете, это не значит, что оно неправильно работает.

Про моду ничего сказать не могу, а вот функция FileTell работает неправильно!
 
sanyooooook:

попробуй точку с запятой убрать

ЗЫ: странную работу этой функции замечал, может от того что не хотелось признавать свою работу странной )


Точку с запятой убирать пробовал - ничего не дает.