Реter 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() 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).
//--- 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
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.
Obrigado. Ainda bem que eu não sou o único que enfrenta este problema. Preciso resolver este problema (não posso terminar de usar onavegador de arquivos sem ele). Eu escrevi para o servicedeck. Mas também estou escrevendo aqui, por via das dúvidas. Não foi em vão).
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
2017.08.2817:36:18.525 Demo_FolderDelete EURUSD.e,H4: Не удалось удалить папку nonempty. Код ошибки=50252017.08.2817:36:16.985 Demo_FolderDelete EURUSD.e,H4: Не удалось очистить папку nonempty. Код ошибки=5026
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...
2017.08.2817:50:45.328 Demo_FolderDelete (CADJPY,H4) Не удалось очистить папку nonempty. Код ошибки=50252017.08.2817:50:47.958 Demo_FolderDelete (CADJPY,H4) Не удалось удалить папку nonempty. Код ошибки=5024
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?
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...(