Работа с файлами. - страница 6

 
Yedelkin:

Давно с файловыми операциями не работал.. Посмотрите, у Вас при использовании FileOpen() объявлен файл типа CSV. Раньше указывалось, что все записанные элементы преобразуются к строкам unicode или ansi. Может, здесь собака?

Грёбанный Виннипух!!!

Там она как раз и "порылась" :) Добавилв параметр FILE_ANSI и все покатило как по маслу!

FileOpen("Price Label\\"+_Symbol+tpl_ext,FILE_READ|FILE_CSV|FILE_ANSI,';',CP_ACP);


Yedelkin, TheXpert спасибо за наводку!!! :)

 

is_vale: 

...

Судя по тому, что я вижу в дебагере (в переменной sTF краказёбы типа китайских иероглифов) он прочитал содержимое файла как уникод! При открытии файла перепробывал все допустимые кодовые страницы, но результат тот же :( Сам файл записан в виндовой кодировке.

Кто нибудь имеет представление где тут собака порылась?

По умолчанию записывается в UNICODE. Поэтому установите флаг  FILE_ANSI:

int handle=FileOpen("Price Label\\"+_Symbol+tpl_ext,FILE_READ|FILE_CSV|FILE_ANSI,';',CP_ACP);

 
tol64:

По умолчанию записывается в UNICODE. Поэтому установите флаг  FILE_ANSI:

Оперативненько подсказали. )))
 
uint  FileReadArray(
   int   file_handle,               // handle файла
   void  array[],                   // массив для записи
   int   start_item=0,              // с какой позиции массива писать
   int   items_count=WHOLE_ARRAY    // сколько читать
   );
Вопрос насчёт размера array[]. Надо ли как-то устанавливать размер массива array[] перед его использованием в функции FileReadArray(), или же "исполняющая система терминала" сама позаботится о его размере в данном случае?
 
Yedelkin:
Вопрос насчёт размера array[]. Надо ли как-то устанавливать размер массива array[] перед его использованием в функции FileReadArray(), или же "исполняющая система терминала" сама позаботится о его размере в данном случае?

Нет, функция сама распределит память под требуемое количество данных находящихся в файле, достаточно передать динамичный массив.

Кстати читать так же можно и массивы простых структур, если они туда записывались.

ЗЫ Функция FileReadArray() не распознаёт тип сохранённых данных, так что будь внимателен, это одна из фич, можно сохранить дубли а прочитать их как улонг и распарсить на биты.

 

Классно.

Urain:

ЗЫ Функция FileReadArray() не распознаёт тип сохранённых данных, так что будь внимателен, это одна из фич, можно сохранить дубли а прочитать их как улонг и распарсить на биты.

 Т.е. массивы при сохранении и считывании должны быть одного типа, я правильно понял? Этого достаточно?

 
Yedelkin:

Классно.

 Т.е. массивы при сохранении и считывании должны быть одного типа, я правильно понял? Этого достаточно?

Да.
 
Urain:
Да.
Грасиас мучас!
 
bool  FileCopy(
    string  src_filename,       // имя файла-источника
    int     common_flag,        // место действия
    string  dst_filename,       // имя файла назначения
    int     mode_flags          // способ доступа
    );

В описании сказано:

common_flag

[in] Флаг, определяющий местоположение файла. Если common_flag=FILE_COMMON, то файл находится в общей папке всех клиентских терминалов. В противном случае файл находится в локальной папке. 

Вот если файл-источник находится в общей папке, то common_flag=FILE_COMMON, это понятно. А если файл находится в локальной папке - какой флаг указывать? Параметр common_flag не является умолчательным, - значит, какое-то значение всё равно должно быть указано.
 
Yedelkin:

В описании сказано:

Вот если файл-источник находится в общей папке, то common_flag=FILE_COMMON, это понятно. А если файл находится в локальной папке - какой флаг указывать? Параметр common_flag не является умолчательным, - значит, какое-то значение всё равно должно быть указано.
Если FILE_COMMON не указывать, то по умолчанию в локальной папке будет.
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов - Документация по MQL5