Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Есть возможность протестировать программу перед покупкой. Узнай как!
DenisR
665
DenisR 2010.12.13 01:13 

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

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

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

Файлы:
test1.mq4 2 kb
Alexandr Bryzgalov
27641
Alexandr Bryzgalov 2010.12.13 01:16  

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

ЗЫ: ты же пере этим прочитал строку, значит указательн стоит в конце строки
Dmitry Fedoseev
42921
Dmitry Fedoseev 2010.12.13 01:20  
Что за мода такая пошла... сразу неправильно. Если вы чего-то не понимаете, это не значит, что оно неправильно работает.
DenisR
665
DenisR 2010.12.13 01:21  
sanyooooook:

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

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

Информация в CSV файлах читается только до разделителя, а не до конца строки.
Alexandr Bryzgalov
27641
Alexandr Bryzgalov 2010.12.13 01:21  
   _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);
    }

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

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


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

Alexandr Bryzgalov
27641
Alexandr Bryzgalov 2010.12.13 01:32  

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

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

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

Aleksander
1673
Aleksander 2010.12.13 01:33  

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

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

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

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

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

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

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


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