Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Tanto quanto sei, se não foram feitas mudanças no arquivo usando funções de arquivo (por exemplo, FileWrite()), não há necessidade de fechá-lo. A função FileOpen() simplesmente cria um novo arquivo e esta operação não requer o fechamento do arquivo (a documentação para esta função, também não diz que o arquivo precisa ser fechado após a criação).
Oy-lee! Storyteller https://docs.mql4.com/ru/files/fileopen
//--- a maneira correta de trabalhar na "caixa de areia de arquivo".
ResetLastError();
filehandle=FileOpen("fractals.csv",FILE_WRITE|FILE_CSV);
if(filehandle!=INVALID_HANDLE)
{
FileWrite(filehandle,TimeCurrent(),Symbol(),EnumToString(ENUM_TIMEFRAMES(_Periodo));
FileClose(filehandle);
Imprimir("FileOpen OK");
}
senãoPri
Oy-lee! Storyteller https://docs.mql4.com/ru/files/fileopen
Qual é a contradição com o que eu disse?
Eu disse, -
Retag Konow:
Tanto quanto sei, se não foram feitas mudanças no arquivo usando funções de arquivo (por exemplo, FileWrite()), não há necessidade de fechá-lo. A função FileOpen() apenas cria um novo arquivo e esta operação não requer o fechamento do arquivo (a documentação para esta função também não diz que o arquivo precisa ser fechado após a criação).
Mas em seu exemplo, a função FileWrite() é utilizada imediatamente após a criação do arquivo. E então você usa FileClose(filehandle);
Além disso, no código do script acima, acrescentei um encerramento explícito, mas isso não resolveu nada...
Exatamente como isto. Quando tento apagar uma pasta que já contém subpastas e arquivos, eu apago os arquivos primeiro. Restam apenas as subpastas. Eu tento limpá-los usando FolderClean() e depois chamo FolderDelete(). Entretanto, o resultado é que aquelas subpastas que estavam vazias são bem apagadas, mas se houvesse mais subpastas dentro das subpastas, elas não são apagadas. Depois disso, tento remover as pastas do navegador de arquivos no MetaEditor manualmente, mas o terminal não as remove e abre esta janela:
Eu clico em "Continuar", concordo com as mudanças, mas a pasta ainda não foi apagada. Após fechar e reabrir completamente o terminal, as pastas que deveriam ter sido apagadas desaparecem por si mesmas ou não, mas você pode apagá-las imediatamente e manualmente sem a janela acima.
Coisas tão estranhas...
Eu já vi este tipo de coisa muitas vezes. Descobri que em algum momento a pasta de Arquivos com todas as suas subpastas e arquivos recebe o atributo de somente leitura. Desmarcar esta bandeira manualmente não ajuda. Mas o reinício do terminal sempre ajuda. Não conseguiu fazer com que ele jogasse (não tentou), então não informou à SD.
O erro (5022) só ocorre se você definir FILE_COMMON
Limpa a pasta, mas não a apaga
Esta bandeira não precisa ser definida, caso contrário o arquivo será pesquisado na pasta compartilhada, e o erro diz que o nome do diretório está errado.
Caminho do arquivo
"\\MQL4\\Files";
não exige que esta bandeira seja hasteada. Portanto, tudo está correto.
Eu já vi este tipo de coisa acontecer várias vezes. Descobri que em algum momento a pasta Arquivos com todas as subpastas e arquivos recebe atributo somente leitura. Desmarcar esta bandeira manualmente não ajuda. Mas o reinício do terminal sempre ajuda. Não conseguiu fazer com que ele jogasse (não tentou), então não informou à SD.
Esta bandeira não precisa ser definida, caso contrário o arquivo será pesquisado na pasta compartilhada e o erro diz que o nome do diretório está errado.
Tanto com como sem FILE_COMMON - funciona (originalmente ao verificar, esqueci de colocar esta bandeira no último "se"). Com o FILE_COMMON ficou implícito que ele está presente em todas as operações
Esta bandeira não precisa ser colocada, caso contrário o arquivo será pesquisado na pasta pública, e o erro diz que o nome do diretório está errado.
O caminho para o arquivo
não exige que esta bandeira seja hasteada. Portanto, tudo está correto.
Isso tudo é estranho. Notei os caminhos da pasta MQL4 e recompilei o código em .ex4 e, estranhamente, o código funcionou sem erros. Eu removi o fechamento do arquivo e recebi
Então, sem correções, eu o executei no mt5 e, estranhamente, a menção da pasta MQL4 foi ignorada. A pasta e o arquivo foram criados na pasta MQL5. A partir daqui tudo é igual ao MT4. Um arquivo não fechado não é excluído...
Isso tudo é estranho. Notei os caminhos da pasta MQL4 e recompilei o código em .ex4 e, estranhamente, o código funcionou sem erros. Removido o fechamento do arquivo e obtido
Então, sem correções, eu o executei no mt5 e, estranhamente, a menção da pasta MQL4 foi ignorada. A pasta e o arquivo foram criados na pasta MQL5. A partir daqui tudo é igual ao MT4. Um arquivo não fechado não é excluído...
Quero dizer, você fez um Expert Advisor a partir de um roteiro e tentou executá-lo?
Mas eu o fecho e o problema permanece... Ai de mim...(