Файловые операции - страница 2

 

Так тебе нужно читать все поля, даже если они не нужны:

void OnStart()
  {
   int Handle;
   int shet;
   datetime Dat_DtTm;
   string File_Name="FinFutYY.csv", Text, Skip;
   Handle=FileOpen(File_Name,FILE_CSV|FILE_READ,",");// открываем файл
   if(Handle<0) // Failure when opening a file
     {
      if(GetLastError()==4103)
         Alert("There is no file named ",File_Name);
      else
         Alert("Error when opening a file ",File_Name);
      PlaySound("Bzrrr.wav");
      return;
     }
   while(FileIsEnding(Handle)==false)
   {
      Skip =FileReadString(Handle);//пропускаем
      Skip =FileReadString(Handle);//первые два поля
      
      Dat_DtTm =FileReadDatetime(Handle);// строка даты
      Text     =FileReadString(Handle);// код контракта в виде строки
      
      while(!FileIsLineEnding(Handle)) Skip =FileReadString(Handle);//пропускаем все остальные поля до конца строки
      
   Print("Dat_DtTm=",Dat_DtTm,"Text=",Text);
   if(FileIsEnding(Handle)==true){ Print("Конец отсчета=");}  
   if(FileIsLineEnding(Handle)){ Print("Конец строки=");} 
   }
    
  }
 
Vladimir Kazakov:

Так тебе нужно читать все поля, даже если они не нужны:

Попробовал вообще убрать разделитель

Handle=FileOpen(File_Name,FILE_CSV|FILE_READ);// открываем файл

 читается все четко без пропусков, только опять дата во всех строках одинаковая и неверная:

Dat_DtTm=2015.07.14 00:00:

 не пойму где программа берет 14 число

 

В документации написано, что "Читает из файла типа CSV строку одного из форматов: "YYYY.MM.DD HH:MI:SS", "YYYY.MM.DD" или "HH:MI:SS" - и преобразует её в значение типа datetime"

Может не понимает формат YYYY-MM-DD ?

А 14 - это сегодня))

 
Vladimir Kazakov:

В документации написано, что "Читает из файла типа CSV строку одного из форматов: "YYYY.MM.DD HH:MI:SS", "YYYY.MM.DD" или "HH:MI:SS" - и преобразует её в значение типа datetime"

Может не понимает формат YYYY-MM-DD ?

А 14 - это сегодня))

Наверное, потому-что в документации через точку, а в файле через черточку. Как вот теперь сделать, чтобы через точку было?
 
forexman77:
Наверное, потому-что в документации через точку, а в файле через черточку. Как вот теперь сделать, чтобы через точку было?
просто взять и сделать через точку
 

Ух. Сделал, только пришлось заголовком пожертвовать, он тоже через тире.

 

2015.07.14 18:30:18.230 COT1 EURUSD,Daily: Dat_DtTm=2015.01.06 00:00:00Text=096742
2015.07.14 18:30:18.230 COT1 EURUSD,Daily: Конец строки=
2015.07.14 18:30:18.230 COT1 EURUSD,Daily: Dat_DtTm=2015.01.13 00:00:00Text=096742
2015.07.14 18:30:18.230 COT1 EURUSD,Daily: Конец строки=
2015.07.14 18:30:18.230 COT1 EURUSD,Daily: Dat_DtTm=2015.01.20 00:00:00Text=096742
 

Можно просто считывать это поле как текст (в string), потом заменить "-" на ".", и потом преобразовать в datetime.

 
Vladimir Kazakov:

Можно просто считывать это поле как текст (в string), потом заменить "-" на ".", и потом преобразовать в datetime.

Спасибо!

Как лучше сделать параллельно открыть файл и вести в него запись или в массив, а потом в конце в файл все записать?

 

Совершенно без разницы, если не требуется какая-нибудь дополнительная обработка совокупности данных, можно сразу и писать.

 
forexman77:

Спасибо!

Как лучше сделать параллельно открыть файл и вести в него запись или в массив, а потом в конце в файл все записать?

еще не победил? день уже прошел ))

скомпилируйте человеку кто нить парсера ))
Причина обращения: