Вопрос к знатокам - колличество строк в файле для Эк календаря для работы по новостям

 

Вопрос к знатокам - колличество строк в файле для Эк календаря для работы по новостям.



Сабж:


у меян есть текстовый файл 255 кб, строк в нем около 3477 mql не хочет читать все строки.


он читает только начало файла, а дальше не хочет и все, хоть ты тресни.


использовал такую конструкцию для чтения файла:


Массивы по 100 элементов, если дата не подходит он просто ее пропускает и все, так вот, в январе читает все номрально, а вот уже в феврале ничего ен читает.


Жирным выделил как выглядит строка в текстовом файле


курсивом это для пропуска дальних дат.

   string startRead() // Спец. функция start
     {
      int GMTt;
  


      int Handle,// Файловый описатель
      Stl;                            // Стиль вертикальной линии
      string File_Name;        // Имя файла
      if(IsTesting())File_Name="1test.txt";
     string      Obj_Name;                    // Имя объекта
      string date;
     Handle=FileOpen(File_Name,FILE_CSV|FILE_READ,";");// Открытие файла
      if(Handle<0) // Неудача при открытии файла
        {
         if(GetLastError()==4103) // Если файла не существует,..
            Print("Нет файла с именем ",File_Name);//.. извещаем трейдера
         else                             // При любой другой ошибке..
         Print("Ошибка при открытии файла ",File_Name);//..такое сообщ
         PlaySound("Bzrrr.wav");          // Звуковое сопровождение
         return;                          // Выход из start()     
        }
         GMTt=GMT-3;
      for(int i=0;i<=99;i++)
        {
         //2009.12.21;1;00:30;AUD;1;Продажи новых автомобилей (MoM);5.50%;;3.30%

         Dateofnews[i]=FileReadString(Handle);
         Daytrade[i]=StrToInteger(FileReadString(Handle));// Дата и время события(дата)
        if(GMTt>0)TimeTrade[i]=StrToTime(Dateofnews[i]+" "+FileReadString(Handle))+GMTt*60*60;
        if(GMTt<0)TimeTrade[i]=StrToTime(Dateofnews[i]+" "+FileReadString(Handle))+GMTt*60*60;
        if(GMTt==0)TimeTrade[i]=StrToTime(Dateofnews[i]+" "+FileReadString(Handle));
         Symboll[i]=FileReadString(Handle);
         Vagnost[i]=StrToInteger(FileReadString(Handle));
         newsAnons[i]=FileReadString(Handle);
         newsPokazatel1[i]=FileReadString(Handle);
         newsPokazatel2[i]=FileReadString(Handle);
         newsPokazatel3[i]=FileReadString(Handle);
         if(StrToTime(Dateofnews[i])<TimeCurrent()-86400)i=i-1;



        }

      FileClose(Handle);            
 
      return();                          
     }
 
       //2009.12.21;1;00:30;AUD;1;Продажи новых автомобилей (MoM);5.50%;;3.30%
            
         if(StrToTime(Dateofnews[i])<TimeCurrent()-86400)i=i-1;

 
дайте образец файла который надо прочитать
 

вот файл

Файлы:
1test.txt  256 kb
 

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


советник не хочет читать все что дальше 200 строки(где-то так)

 

вот допустим, по тому алгоритму что я приложил, получается такая картина,


зеленая линия - степень важности 2, синяя - степень важности 1. т.е. в начале файла оно все читает как надо, потом тупо не хочет читать остальные строки.



 
вот этой строки понять никак не могу : for(int i=0;i<=99;i++)
то есть вы читаете толлько первых 100 строк ?
 

нет смотрите, тут свой фокус, наверно перестарался я.


мы читаем

for(int i=0;i<=99;i++)

99 элементов в память, но! если дата не соответствует сегодняшней, то мы пропускаем строку путем , 
if(StrToTime(Dateofnews[i])<TimeCurrent()-86400)i=i-1;


эксперт не хочет работать с массивом в 4000 элементов.
 
т.е. мы этот элемент i как бы пропускаем.
 
массив какой строковый?
 
массивов всего 9, есть строковые, есть временные.