Ошибки, баги, вопросы - страница 1602

 
Странное поведение при чтении даты из CSV файла.

Из справки:

FileReadDatetime

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

Но формат CSV  формат времени совсем другой "DD.MM.YYYY" и   если его перевести в иной формат в CSV  то там пишет везде число 40101.

Так как считать время из CSV файла ?

Причем в справке написано требование  "YYYY.MM.DD HH:MI:SS", "YYYY.MM.DD" или "HH:MI:SS" а отчеты из терминала в html / CSV сохраняются в формате "DD.MM.YYYY" 

 


 

 
Vladimir Pastushak:
Странное поведение при чтении даты из CSV файла.

Из справки:

FileReadDatetime

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

Но формат CSV  формат времени совсем другой "DD.MM.YYYY" и   если его перевести в иной формат в CSV  то там пишет везде число 40101.

Так как считать время из CSV файла ?

Причем в справке написано требование  "YYYY.MM.DD HH:MI:SS", "YYYY.MM.DD" или "HH:MI:SS" а отчеты из терминала в html / CSV сохраняются в формате "DD.MM.YYYY" 

 


 

Я считываю построчно в массив строк весь файл и затем пропускаю его через парсинг. Но это если знаешь изначально структуру файла. При этом типы datetime преобразуются в обе стороны корректно.
 
coderex:
Я считываю построчно в массив строк весь файл и затем пропускаю его через парсинг. Но это если знаешь изначально структуру файла. При этом типы datetime преобразуются в обе стороны корректно.
Парсить это слишком тяжелый процесс. Мдеее ... Так что никто не в курсе как получить дату из екселя ? Меня удивляет что функция из мкл требует не стандартный формат даты...
 
Vladimir Pastushak:
Парсить это слишком тяжелый процесс. Мдеее ... Так что никто не в курсе как получить дату из екселя ? Меня удивляет что функция из мкл требует не стандартный формат даты...
Насчет тяжести это смотря какая задача стоит :) У вас есть изначальная структура файла? К примеру отчеты в МТ4 без сложностей поддаются парсингу хотя на первый взгляд вроде как и сложно, главное что бы файл был структурирован.
 
coderex:
Насчет тяжести это смотря какая задача стоит :) У вас есть изначальная структура файла? К примеру отчеты в МТ4 без сложностей поддаются парсингу хотя на первый взгляд вроде как и сложно, главное что бы файл был структурирован.

Файл структурирован по типу

дата; текст; текст; текст; текст 

дата; текст; текст; текст; текст

дата; текст; текст; текст; текст

дата; текст; текст; текст; текст  

 

Вот с получением даты проблема... 

Может у Вас есть пример чтения даты ? 

 
Vladimir Pastushak:

Файл структурирован по типу

дата; текст; текст; текст; текст 

дата; текст; текст; текст; текст

дата; текст; текст; текст; текст

дата; текст; текст; текст; текст  

 

Вот с получением даты проблема... 

Может у Вас есть пример чтения даты ? 

Конечно есть, я же выше писал :) а скажите, вы как предполагаете разложить строки? Я бы создал массив структур:

struct SParam
  {
   datetime m_data;
   string m_text[4];
  } param[];

Кстати данный файл также будете сами создавать или нет? Я в личку отправил пример реализации.

 
Vladimir Pastushak:
Парсить это слишком тяжелый процесс. Мдеее ... Так что никто не в курсе как получить дату из екселя ? Меня удивляет что функция из мкл требует не стандартный формат даты...

Вы очень ошибаетесь в отношении парсинга.

Парсить дату нужно через свою функцию парсинга даты, понимающую формат екселя.

 
Vasiliy Sokolov:

Вы очень ошибаетесь в отношении парсинга.

Парсить дату нужно через свою функцию парсинга даты, понимающую формат екселя.

Сначала прочитать,

затем распарсить,

затем заполнить массив структуры

ИЛИ

Прочитать сразу в массив структыры ?

Задача поставлена у мну такая по годам просчитать профит, по месяцам в каждом годе, по разным ордерам, причем учесть все типы ордеров комиссий свопов.

Вот и получилось что то типа

Year[].Month[].Day[].BuyProf

Внимая дату из екселя и приобретая её в год и месяц получалась ерунда.... 

Ошибка была в том что в некоторых ячейках закрался перенос строки... 

 
Vladimir Pastushak:

Сначала прочитать,

затем распарсить,

затем заполнить массив структуры

ИЛИ

Прочитать сразу в массив структыры ?

Задача поставлена у мну такая по годам просчитать профит, по месяцам в каждом годе, по разным ордерам, причем учесть все типы ордеров комиссий свопов.

Вот и получилось что то типа

Year[].Month[].Day[].BuyProf

Внимая дату из екселя и приобретая её в год и месяц получалась ерунда.... 

Ошибка была в том что в некоторых ячейках закрался перенос строки... 

   int h = FileOpen(file_name, FILE_BIN|FILE_READ|FILE_SHARE_READ|common);
   uchar array[];
   FileReadArray(h, array, 0, WHOLE_ARRAY);
   FileClose(h);
   string text = CharArrayToString(array, 0, WHOLE_ARRAY, CP_ACP);
   string lines[];
   StringSplit(text, '\n', lines);
   for(int i = 1, k=0; i < count_lines; i++)
   {
      string columns[];
      StringSplit(lines[i], ';', columns);
      datetime date = ParseData(columns[0]);
      ///
   }
ParseData - ваша функция. Далее парсите остальные строки.
 

Абстрактная ошибка internal error #112 при компиляции

#property library
void f() {}
void g() export { f; }