- 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
La función abre el archivo con el nombre especificado y las banderas especificadas.
int FileOpen(
|
Parámetros
file_name
[in] Nombre del archivo a abrir, puede contener subcarpetas. Si el archivo se abre para la escritura, las subcarpetas especificadas serán creadas en caso de que no existan.
open_flags
[in] combinación de banderas que determina el modo de trabajo con el archivo. Las banderas están definidas como sigue:
FILE_READ el archivo se abre para la lectura
FILE_WRITE el archivo se abre para la escritura
FILE_BIN modo binario de lectura-escritura (sin conversión de una cadena, ni tampoco en una cadena)
FILE_CSV archivo del tipo csv (todos los elementos grabados se convierten a las cadenas del tipo correspondiente, unicode o ansi, y se separan con un delimitador)
FILE_TXT archivo de texto simple (igual que el archivo csv pero sin tomar en cuenta los delimitadores)
FILE_ANSI cadenas del tipo ANSI (símbolos de un byte)
FILE_UNICODE cadenas del tipo UNICODE (símbolos de dos bytes)
FILE_SHARE_READ acceso compartido de lectura de parte de varios programas
FILE_SHARE_WRITE acceso compartido de escritura de parte de varios programas
FILE_COMMON ubicación del archivo en una carpeta compartida de todos los terminales de cliente \Terminal\Common\Files
delimiter='\t'
[in] valor que se usa como un separador en el archivo txt o csv. Si para el archivo csv el delimitador no está especificado, por defecto se emplea el símbolo de tabulación. Si para el archivo txt el delimitador no está especificado, no se usa ningún separador. Si el valor 0 está establecido como un separador, no se utiliza ningún separador.
codepage=CP_ACP
[in] Valor de la página de código. Están previstas las constantes correspondientes para las páginas de códigos más usadas.
Valor devuelto
En caso de abrir con éxito, la función devuelve el manejador del archivo que luego se usa para acceder a los datos del archivo. En caso de fallo devuelve INVALID_HANDLE.
Nota
Por razones de seguridad el trabajo con los archivos en el lenguaje MQL5 se encuentra bajo un estricto control. Los archivos con los que se realizan las operaciones de archivos utilizando los medios del lenguaje MQL5 no pueden estar fuera del entorno protegido de archivos (file sandbox).
Asegúrese de activar la bandera FILE_ANSI si el archivo debe ser leído en una codificación específica (se indica el parámetro codepage con el valor de la página de código). Si no indica la bandera FILE_ANSI, el archivo de texto se leerá en Unicode sin conversión alguna.
El archivo se abre en la carpeta del terminal de cliente en la subcarpeta MQL5\files (o catálogo_del_agente_de_simulación\MQL5\files en caso de prueba). Si entre las banderas está indicada FILE_COMMON, el archivo se abre en la carpeta compartida de todos los terminales de cliente de MetaTrader5.
"Las tuberías nombradas" pueden ser abiertas de acuerdo con las siguientes reglas:
- El nombre de la tubería es la cadena que debe tener la siguiente apariencia: "\\servername\pipe\pipename", donde servername es el nombre del servidor en la red y pipename es el nombre de la tubería. Si las tuberías se utilizan en el mismo ordenador, se puede omitir el nombre del servidor, pero a su vez hay que poner un punto: "\\.\pipe\pipename". El cliente que intenta conectarse con la tubería tiene que saber su nombre.
- Hay que llamar a las funciones FileFlush() y FileSeek() al inicio del archivo entre las operaciones consecutivas de lectura desde la tubería y la escritura en ella.
En las cadenas mostradas se utiliza un símbolo especial, la barra inversa '\'. Por eso, cuando se escribe el nombre en el programa MQL5, hace falta duplicar la barra inversa '\'. Es decir, escribir el ejemplo arriba mencionado en el código de la siguiente manera: "\\\\servername\\pipe\\pipename".
Puede encontrar más información sobre el trabajo con las tuberías nombradas en el artículo "Communicating With MetaTrader 5 Using Named Pipes Without Using DLLs".
Ejemplo:
//+------------------------------------------------------------------+
|
Véase también
Uso de página de código, FileFindFirst, FolderCreate, Banderas de apertura de archivos