- FileSelectDialog
- FileFindFirst
- FileFindNext
- FileFindClose
- FileIsExist
- FileOpen
- FileClose
- FileCopy
- FileDelete
- FileMove
- FileFlush
- FileGetInteger
- FileIsEnding
- FileIsLineEnding
- FileReadArray
- FileReadBool
- FileReadDatetime
- FileReadDouble
- FileReadFloat
- FileReadInteger
- FileReadLong
- FileReadNumber
- FileReadString
- FileReadStruct
- FileSeek
- FileSize
- FileTell
- FileWrite
- FileWriteArray
- FileWriteDouble
- FileWriteFloat
- FileWriteInteger
- FileWriteLong
- FileWriteString
- FileWriteStruct
- FileLoad
- FileSave
- FolderCreate
- FolderDelete
- FolderClean
FileOpen
Функция открывает файл с указанным именем и указанными флагами.
int FileOpen(
|
Параметры
file_name
[in] Имя открываемого файла, может содержать подпапки. Если файл открывается для записи, то указанные подпапки будут созданы в случае их отсутствия.
open_flags
[in] комбинация флагов, определяющая режим работы с файлом. Флаги определены следующим образом:
FILE_READ файл открывается для чтения
FILE_WRITE файл открывается для записи
FILE_BIN двоичный режим чтения-записи (без преобразования из строки и в строку)
FILE_CSV файл типа csv (все записанные элементы преобразуются к строкам соответствующего типа, unicode или ansi, и разделяются разделителем)
FILE_TXT простой текстовый файл (тот же csv, однако разделитель не принимается во внимание)
FILE_ANSI строки типа ANSI (однобайтовые символы)
FILE_UNICODE строки типа UNICODE (двухбайтовые символы)
FILE_SHARE_READ совместный доступ по чтению со стороны нескольких программ
FILE_SHARE_WRITE совместный доступ по записи со стороны нескольких программ
FILE_COMMON расположение файла в общей папке всех клиентских терминалов \Terminal\Common\Files.
delimiter='\t'
[in] значение, используемое в качестве разделителя в txt или csv-файле. Если для csv-файла разделитель не указан, то по умолчанию используется символ табуляции. Если для txt-файла разделитель не указан, то никакой разделитель не используется. Если в качестве разделителя явно задано значение 0, то никакой разделитель не используется.
codepage=CP_ACP
[in] Значение кодовой страницы. Для наиболее употребимых кодовых страниц предусмотрены соответствующие константы.
Возвращаемое значение
В случае успешного открытия функция возвращает хэндл файла, который затем используется для доступа к данным файла. В случае неудачи возвращает INVALID_HANDLE.
Примечание
Из соображений безопасности в языке MQL5 строго контролируется работа с файлами. Файлы, с которыми проводятся файловые операции средствами языка MQL5, не могут находиться за пределами файловой "песочницы".
Если файл требуется прочитать в определенной кодировке (указан параметр codepage со значением кодовой страницы), то необходимо обязательно выставить флаг FILE_ANSI. Без указания флага FILE_ANSI чтение текстового файла будет происходить в Юникоде без какого-либо преобразования.
Файл открывается в папке клиентского терминала в подпапке MQL5\Files (или каталог_агента_тестирования\MQL5\Files в случае тестирования). Если среди флагов указан FILE_COMMON, то файл открывается в общей папке всех клиентских терминалов \Terminal\Common\Files.
Можно открывать "именованные каналы" по следующим правилам:
- Имя канала - строка, которая должна иметь вид: "\\servername\pipe\pipename", где servername - имя сервера в сети, а pipename - имя канала. Если каналы используются на одном и том же компьютере, имя сервера может быть опущено, но вместо него нужно поставить точку: "\\.\pipe\pipename". Клиент, который пытается соединиться с каналом, должен знать его имя.
- Необходимо вызывать FileFlush() и FileSeek() на начало файла между последовательными операциями чтения из канала и записи в канал.
В приведенных строках используется специальный символ обратная косая черта '\', поэтому при написании имени в MQL5 программе '\' необходимо удваивать, то есть вышеприведенный пример написать в коде как "\\\\servername\\pipe\\pipename".
Более подробно о работе с именованными каналами можно прочитать в статье "Связь с MetaTrader 5 через именованные каналы без применения DLL"
Пример:
//+------------------------------------------------------------------+
|
Смотри также
Использование кодовой страницы, FileFindFirst, FolderCreate, Флаги открытия файлов