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
Por favor, continue - desde que você escreva no fascinante gênero de "ficção". Esperamos que por volta da página 40 você tenha passado para a literatura técnica.
Tenho todos os arquivos apagados, mesmo sem fechá-los explicitamente. Apagadas porque eu não as criei e elas estavam anteriormente dentro da pasta de Arquivos.
A questão é que, para apagar um arquivo, precisamos de sua alça. Entretanto, se não criamos este arquivo, mas apenas o colocamos na pasta FileClose(), não podemos obtê-lo, e portanto não podemos fechá-lo com FileClose().
Ao mesmo tempo, ainda podemos copiá-lo ou apagá-lo. Entretanto, a pasta não pode ser apagada depois disso, nem programática nem manualmente. Manualmente somente depois de reiniciar o terminal.
Tentarei reproduzir o problema mais claramente mais tarde, com exemplos ilustrativos.
O código só tem que estar completo. Se o arquivo estiver aberto, ele deverá ser fechado antes do desligamento do computador ou fechamento do MT4/5. E de preferência, o cabo deve ser acessível de qualquer lugar do programa. Este é o IMHO. Melhor ainda, feche o arquivo imediatamente após realizar uma operação de leitura/escrita com ele ou mesmo se você não tiver que fazer nada com ele.
A documentação do exemplo parece mostrar como não fazer isso.
Também é muito importante lembrar que ao escrever em um arquivo, o arquivo escrito só pode ser lido lavando todos os dados restantes no buffer de E/S do arquivo para o disco usando FileFlush ou fechando o arquivo. O fechamento do arquivo forçará um reset dos dados em disco.
Resumo: Se você abrir um arquivo, não se esqueça de fechá-lo. E o cabo do arquivo não será perdido.
O código simplesmente precisa estar completo. Se um arquivo estiver aberto, ele deve ser fechado antes de desligar o computador ou fechar o MT4/5. E o cabo, de preferência, deve ser acessível de qualquer lugar do programa. Este é o IMHO. Melhor ainda, feche o arquivo imediatamente após a operação de leitura/escrita com ele ou mesmo se você não tiver que fazer nada com ele.
A documentação do exemplo parece mostrar como não fazer isso.
Também é muito importante lembrar que ao escrever em um arquivo, o arquivo escrito só pode ser lido lavando todos os dados restantes no buffer de E/S do arquivo para o disco usando FileFlush ou fechando o arquivo. O fechamento do arquivo forçará um reset dos dados em disco.
Resumo: Se você abrir um arquivo, não se esqueça de fechá-lo. E o cabo do arquivo não será perdido.
Mais uma vez, posso fechar um arquivo criado por meu programa usando a função FileClose() - eu tenho sua alça.
Eu não posso fechar um arquivo criado por outra pessoa, mas existente na pasta Arquivos, porque não tenho um cabo para ele.
Se eu copiar o arquivo, que não foi criado por mim (não meu programa), então eu não posso fechá-lo após copiar com a função FileClose() (sem alça), MAS eu posso apagá-lo.
Talvez seja por isso que as pastas com arquivos copiados e excluídos não são excluídos pela função FolderClean(). Provavelmente, porque eles não foram fechados depois de serem copiados.
MAS ELES NÃO PODEM SER FECHADOS PORQUE NÃO TÊM ALÇA!
:)))
Perguntas para os desenvolvedores:
1. Como obter a manipulação do arquivo que foi criado na pasta Arquivos antes de carregar o script?
2. O problema de apagar pastas usando FolderClean(), depois de apagar arquivos nelas que foram previamente copiados para outra pasta e não fechados após a cópia (porque não há nenhuma alavanca), poderia ter a causa acima?
Perguntas para os desenvolvedores:
1. Como obter a manipulação do arquivo que foi criado na pasta Arquivos antes de carregar o script?
2. O problema de apagar pastas usando a função FolderClean(), depois de apagar arquivos nelas que foram previamente copiados para outra pasta e não fechados após a cópia (porque não há nenhuma alavanca), poderia ter a razão acima?
Este é mais ou menos o básico do sistema operacional. Se um aplicativo tiver aberto um arquivo para escrita, nem esse arquivo nem a pasta que o contém podem ser apagados. Tente abrir um arquivo no Word e depois usar as ferramentas do sistema operacional para excluir a pasta em que está. O que vai acontecer? Você não poderá fazê-lo, porque não terá acesso a ele.
Bem, você pode obter o arquivador. Mas de que serviria tal ação? Afinal de contas, se o arquivo for aberto por outro aplicativo, você verá a declaração anterior. Receberemos apenas uma alça que seja válida em nossa aplicação.
Este é mais ou menos o básico do sistema operacional. Se um aplicativo tiver aberto um arquivo para escrita, nem o arquivo nem a pasta que o contém podem ser apagados. Tente abrir um arquivo no Word e depois usar o sistema operacional para excluir a pasta onde ele se encontra. O que vai acontecer? Você não poderá fazê-lo, porque não terá acesso a ele.
Bem, você pode obter o arquivador. Mas de que serviria tal ação? Afinal de contas, se o arquivo for aberto por outro aplicativo, você verá a declaração anterior. E só podemos obter uma alça que seja válida em nossa aplicação particular.
O arquivo é aberto por minha aplicação (navegador de arquivos) para ser sobrescrito em outra pasta.
Depois de escrever por cima, preciso fechar o arquivo, mas não posso - (sem alça), então eu simplesmente apago o arquivo.
Não há nenhuma maçaneta porque o arquivo foi criado desconhecido quando e por quem.
Ao mesmo tempo, o arquivo existe dentro da pasta Files e pode ser copiado para outra pasta e depois apagado.
Mas após a cópia, o arquivo não pode ser fechado. Não há alça.
É provavelmente por isso que o apagamento de pastas FolderClean() com arquivos apagados, não funciona.
Questão: como faço para colocar este arquivo no programa MQL?
Este parece ser um problema ainda não enfrentado na comunidade. :)
OK, vou pensar em algo.
Eu sempre faço).
Mitos desmascaradores.
Portanto, dados terminais no sistema operacional:
No momento dos testes, a pasta "test" foi criada em [pasta de dados]\MQL5\Files e o arquivo de texto "source.txt" com o seguinte conteúdo foi criado nele:
Então, passo 1: Cópia do arquivo "source.txt" para outro usando ferramentas MQL5
Roteiro:
Etapa 2: Limpeza da pasta "teste" usando ferramentas MQL5
Roteiro:
Etapa 3: Eliminação da pasta "teste" usando ferramentas MQL5
Qual é o problema? Tudo funciona.
Qual é o problema? Tudo funciona.
Obrigado por esse exemplo. Descobrirei amanhã de manhã. Eu não tenho energia neste momento).
Vou testar tudo e lhe darei uma resposta.
Adicionado:
Você citou aqui três roteiros diferentes.
Eu tenho um programa e copiar, apagar arquivos e pastas acontece dentro de uma função em dois ciclos.
Entrar no primeiro ciclo: primeiro os arquivos fonte são copiados para outra pasta, depois esses arquivos fonte são apagados. Sair do primeiro ciclo.
Entre no segundo loop: Limpamos a pasta de origem com FolderClean() e apagamos a pasta de origem com -FolderDelete().
Em seguida, olhamos no navegador de arquivos no meta-editor e vemos que a pasta de origem foi parcialmente apagada. As subpastas que não tinham arquivos foram completamente apagadas e aquelas que tinham alguns arquivos não foram apagadas, mas estão vazias.
Tentando remover pastas manualmente - nós a temos:
Em seguida, fechamos o terminal e o iniciamos novamente. Vemos que algumas subpastas desapareceram por conta própria, outras permaneceram. Nós os apagamos manualmente sem nenhum problema. Desta vez.