mrProF: Навскидку, в str записывается весь файл... Добавьте флаг FILE_ANSI , т.к. по умолчанию читает юникод:) И еще, i будет 15, т.к. там есть пустая строка в конце.
Согласно документации MQL5, фунуция FileReadString "читает из файла строку с текущего положения файлового указателя ... при чтении из csv-файла будет прочитана строка от текущего положения до ближайшего разделителя либо до признака конца текстовой строки". Поэтому не соглашусь с тем, что "записывается весь файл". FILE_ANSI ставить пробовал, ничего не дает. По поводу пустой строки в конце: не совсем понял, поясните, о какой строке вы говорите.
DenisR: Согласно документации MQL5, фунуция FileReadString "читает из файла строку с текущего положения файлового указателя ... при чтении из csv-файла будет прочитана строка от текущего положения до ближайшего разделителя либо до признака конца текстовой строки". Поэтому не соглашусь с тем, что "записывается весь файл". FILE_ANSI ставить пробовал, ничего не дает. По поводу пустой строки в конце: не совсем понял, поясните, о какой строке вы говорите.
Это если он правильно найдет запятую, если кодировка не совпадет, то может и не заметить. Шас дебагером гляну. Что значит флаг ansi ни чего не дает, скопировал Ваш код, добавил флаг - все ок.
И так, вот результаты, как я и сказал. Без анси читает абрукадабру и не видя запятых, пролетает до конца файла. С анси, все нормально читает. Вложения смотрите.
-Alexey-: В МетаЕдиторе по кнопке "Список функций в файле" открывается список. Если его листать вниз, то он кончается на букве P, и дальше не сдвигается(черный треугольник, направленный вниз, становится неактивным), хотя классы есть и на букву R. Просьба исправить.
Нужно больше деталей.
Билд, файл, разрешение...
Только что попробовал на файле ChartObject.mqh - скроллится и вверх и вниз.
mrProF: И так, вот результаты, как я и сказал. Без анси читает абрукадабру и не видя запятых, пролетает до конца файла. С анси, все нормально читает. Вложения смотрите.
С анси у меня читает (5 505 1009), т.е. i теперь вместо 0 почему-то равно 5, размер файла, как и прежде, равен 505 и FileTell, как и прежде, равен 1009. В МТ4 тот же скрипт читает (15 505 505).
Только что попробовал на файле ChartObject.mqh - скроллится и вверх и вниз.
Interesting: А хотя бы приблизительный размер списка какой? Может по размеру списка ограничение есть...
-Aleksey-
Ровно 100 строк.
Interesting:
Поэкспериментировал с одной из своих библиотек (110 функций), отображаются в списке от 100 до 106 (причем все время разное число, но не 110).
Билд последний, похоже, проблема с числом строк больше 100. В ChartObject.mqh только 62 строки в списке. Разрешение 1680х1050. Windows7, схема шрифтов - укрупненные шрифты.
DenisR: С анси у меня читает (5 505 1009), т.е. i теперь вместо 0 почему-то равно 5, размер файла, как и прежде, равен 505 и FileTell, как и прежде, равен 1009. В МТ4 тот же скрипт читает (15 505 505).
Хм, у меня 155091009.
//+------------------------------------------------------------------+//| test.mq5 |//| mrProF |//| http:// |//+------------------------------------------------------------------+#property copyright "mrProF"#property link "http://"#property version "1.00"//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{int handle;
ulong i, size;
double _Ask, _Bid;
string str;
handle = FileOpen("test.csv",FILE_CSV|FILE_READ|FILE_ANSI,',');
if (handle != INVALID_HANDLE)
{
size = FileSize(handle);
for (i = 0; i < size; i++)
{
str = FileReadString(handle);
_Ask = FileReadNumber(handle);
_Bid = FileReadNumber(handle);
if (FileIsEnding(handle))
{
Print(i," ",size," ",FileTell(handle));
break;
}
}
}
FileClose(handle);
return;
}
//+------------------------------------------------------------------+
Попробуйте отладкой построчно пройтись, если умеете...
У меня сначала было тоже 15 505 1009, но потом терминал обновился до последней версии (408) и стало 5 505 1009. Но в любом случае, признак конца файла не может быть больше размера самого файла. Сейчас меня это волнует больше всего.
Только что попробовал на файле ChartObject.mqh - скроллится и вверх и вниз.
Билды 404 и 408, Win XP Prof SP3, CPU 3.0 GHz и RAM 3.0 Gb.
Размер шрифта и остальные настройки (кроме цветовых) стандартные.
Действия следующие:
1. Создаем библиотеку или любой другой программный модуль;
2. Формируем набор процедур и функций, больше 100. В моем случае было 110 (издевался над своей миграционной библиотекой).
если говорить более конкретно то функций было 110 и модуль вышел размером примерно в 3310 строк.
3. Компилируем модуль;
4. Пытаемся посмотреть список функций.
В списке видел от 100 до 106 функций (при каждой повторной компиляции разное число и состав функций). При этом сначала отображались имена 106 функций, а потом их число стало сокращаться.
При этом все 110 функций не разу в список не попали.
PS
Еще был один странный момент - Не знаю после какого количества функция (но точно меньше 50) новые функции перестали появляться в списке после первой компиляции, приходилось делать две или три повторных компиляции.
Предлагаю или изменить порядок формирования списка, к примеру выделить отдельные классы в виде группового меню (с отображением "начинки" класса в отдельном списке), либо организовать отдельный менеджер по подобию того как это сделано в Delphi (обсуждение подобной просьбы уже было на форуме).
Только что попробовал на файле ChartObject.mqh - скроллится и вверх и вниз.
Билд последний, похоже, проблема с числом строк больше 100. В ChartObject.mqh только 62 строки в списке. Разрешение 1680х1050. Windows7, схема шрифтов - укрупненные шрифты.
Навскидку, в str записывается весь файл...
Добавьте флаг FILE_ANSI , т.к. по умолчанию читает юникод:)
И еще, i будет 15, т.к. там есть пустая строка в конце.
Согласно документации MQL5, фунуция FileReadString "читает из файла строку с текущего положения файлового указателя ... при чтении из csv-файла будет прочитана строка от текущего положения до ближайшего разделителя либо до признака конца текстовой строки". Поэтому не соглашусь с тем, что "записывается весь файл". FILE_ANSI ставить пробовал, ничего не дает. По поводу пустой строки в конце: не совсем понял, поясните, о какой строке вы говорите.
Шас дебагером гляну.
Что значит флаг ansi ни чего не дает, скопировал Ваш код, добавил флаг - все ок.
Без анси читает абрукадабру и не видя запятых, пролетает до конца файла.
С анси, все нормально читает.
Вложения смотрите.
В МетаЕдиторе по кнопке "Список функций в файле" открывается список. Если его листать вниз, то он кончается на букве P, и дальше не сдвигается(черный треугольник, направленный вниз, становится неактивным), хотя классы есть и на букву R. Просьба исправить.
Нужно больше деталей.
Билд, файл, разрешение...
Только что попробовал на файле ChartObject.mqh - скроллится и вверх и вниз.
И так, вот результаты, как я и сказал.
Без анси читает абрукадабру и не видя запятых, пролетает до конца файла.
С анси, все нормально читает.
Вложения смотрите.
Нужно больше деталей.
Билд, файл, разрешение...
Только что попробовал на файле ChartObject.mqh - скроллится и вверх и вниз.
А хотя бы приблизительный размер списка какой? Может по размеру списка ограничение есть...
-Aleksey-
Ровно 100 строк.
Interesting:
Поэкспериментировал с одной из своих библиотек (110 функций), отображаются в списке от 100 до 106 (причем все время разное число, но не 110).
Билд последний, похоже, проблема с числом строк больше 100. В ChartObject.mqh только 62 строки в списке. Разрешение 1680х1050. Windows7, схема шрифтов - укрупненные шрифты.
С анси у меня читает (5 505 1009), т.е. i теперь вместо 0 почему-то равно 5, размер файла, как и прежде, равен 505 и FileTell, как и прежде, равен 1009. В МТ4 тот же скрипт читает (15 505 505).
Попробуйте отладкой построчно пройтись, если умеете...
Хм, у меня 155091009.
Нужно больше деталей.
Билд, файл, разрешение...
Только что попробовал на файле ChartObject.mqh - скроллится и вверх и вниз.
Билды 404 и 408, Win XP Prof SP3, CPU 3.0 GHz и RAM 3.0 Gb.
Размер шрифта и остальные настройки (кроме цветовых) стандартные.
Действия следующие:
1. Создаем библиотеку или любой другой программный модуль;
2. Формируем набор процедур и функций, больше 100. В моем случае было 110 (издевался над своей миграционной библиотекой).
если говорить более конкретно то функций было 110 и модуль вышел размером примерно в 3310 строк.
3. Компилируем модуль;
4. Пытаемся посмотреть список функций.
В списке видел от 100 до 106 функций (при каждой повторной компиляции разное число и состав функций). При этом сначала отображались имена 106 функций, а потом их число стало сокращаться.
При этом все 110 функций не разу в список не попали.
PS
Еще был один странный момент - Не знаю после какого количества функция (но точно меньше 50) новые функции перестали появляться в списке после первой компиляции, приходилось делать две или три повторных компиляции.
Предлагаю или изменить порядок формирования списка, к примеру выделить отдельные классы в виде группового меню (с отображением "начинки" класса в отдельном списке), либо организовать отдельный менеджер по подобию того как это сделано в Delphi (обсуждение подобной просьбы уже было на форуме).
alexvd:
Нужно больше деталей.
Билд, файл, разрешение...
Только что попробовал на файле ChartObject.mqh - скроллится и вверх и вниз.
Билд последний, похоже, проблема с числом строк больше 100. В ChartObject.mqh только 62 строки в списке. Разрешение 1680х1050. Windows7, схема шрифтов - укрупненные шрифты.
Да, воспроизвел.
Спасибо, будем смотреть.