- 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
A função abre o arquivo com o nome e a bandeira especificada.
int FileOpen(
|
Parâmetros
file_name
[in] O nome do arquivo pode conter sub-pastas. Se o arquivo é aberto para escrita, estas sub-pastas serão criadas se elas não existirem.
open_flags
[in] combinação de bandeiras que determinam o modo de operação para o arquivo. As bandeiras são definidas das seguintes formas:
FILE_READ arquivo é aberto para leitura
FILE_WRITE arquivo é aberto para a escrita
FILE_BIN modo binário de leitura e escrita(sem conversão de uma string e para uma string)
FILE_CSV arquivo do tipo csv (todos os itens registrados são convertidos para as strings de tipo unicode ou ansi, e são separados por um delimitador)
FILE_TXT um arquivo de texto simples (o mesmo que csv, mas o delimitador não é levado em conta)
FILE_ANSI linhas do tipo ANSI (símbolos de um byte)
FILE_UNICODE linhas do tipo UNICODE (caracteres de bytes duplos)
FILE_SHARE_READ leitura partilhada entre vários programas
FILE_SHARE_WRITE escrita partilhada entre vários programas
FILE_COMMON localização do arquivo em uma pasta compartilhada para todos os terminais de cliente \Terminal\Common\Files.
delimiter='\t'
[in] valor a ser usado como um separador em txt ou csv-file. Se o arquivo .csv delimitador não for especificado, o padrão é uma tabulação. Se o arquivo .txt delimitador não for especificado, então nenhum separador é usado. Se o separador está claramente definido para 0, então nenhum separador é usado.
codepage=CP_ACP
[in] O valor do código de página. Para os mais usados códigos de página forneça as constantes apropriadas.
Valor do Retorno
Se um arquivo foi aberto com sucesso, a função retorna o manipulador de arquivo, que é então usado para acessar os dados do arquivo. Em caso de falha retorna INVALID_HANDLE.
Observação
Por razões de segurança, o trabalho com arquivos é estritamente controlada na língua MQL5. Arquivos com que as operações de arquivo são conduzidas usando os meios MQL5, não podem estar fora da caixa de proteção do arquivo.
Se o arquivo precisar ser lido em uma codificação específica (o parâmetro codepage é especificado com o valor da página de códigos), deverá ser definido o sinalizador FILE_ANSI. Se o sinalizador FILE_ANSI não for especificado, o arquivo de texto será lido em Unicode, sem nenhuma conversão.
O arquivo é aberto na pasta do terminal do cliente na subpasta MQL5\files (ou testing_agent_directory\MQL5\files em caso de testes). Se FILE_COMMON é especificado entre bandeiras, o arquivo é aberto em uma pasta compartilhada para todos os MetaTrader 5 terminais de cliente.
"Pipes nomeados" pode ser aberta de acordo com as seguintes regras:
- Nome do pipe é uma string, que deve ter o seguinte aspecto: "\\servername\pipe\pipeName", onde servername - nome do servidor na rede, enquanto pipename é um nome de tubo. Se os tubos são utilizados no mesmo computador, o nome do servidor pode ser omitido, mas num ponto devem ser inseridos em vez do mesmo: "\\.\pipe\pipename". Um cliente tenta conectar o tubo deve saber o seu nome.
- FileFlush() e FileSeek() deve ser chamado para o início de um arquivo entre as operações seqüenciais de leitura do tubo e gravá-lo.
Um símbolo '\' especial é usado em strings expostas. Portanto, '\' deve ser redobrada quando se escreve um nome na aplicação MQL5. Isso significa que o exemplo acima deve ter o seguinte aspecto no código: "\\\\servername\\pipe\\pipename".
Mais informações sobre como trabalhar com pipes nomeados pode ser encontrada no artigo "Communicating With MetaTrader 5 Using Named Pipes Without Using DLLs".
Exemplo:
//+------------------------------------------------------------------+
|
Também Veja
Utilização de uma página de código (Codepage), FileFindFirst, FolderCreate, Bandeiras de abertura de arquivos