//+------------------------------------------------------------------+
//| Demo_FolderDelete.mq5 |
//| Copyright 2011, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2000-2024, MetaQuotes Ltd."
#property link "https://www.mql5.com"
#property version "1.00"
//--- Descrição
#property description "O roteiro mostra um exemplo de uso FolderDelete()."
#property description "Primeiro duas pastas são criados, um deles está vazia, a segunda contém um arquivo."
#property description "Quando se tenta excluir uma pasta não-vazia, será retornado um erro e um aviso é mostrado."
//--- Mostrar a caixa de diálogo de parâmetros de entrada quando se inicia o script
#property script_show_inputs
//--- Parâmetros de entrada
input string firstFolder="empty"; // Uma pasta vazia
input string secondFolder="nonempty";// A pasta, em que um arquivo será criado
string filename="delete_me.txt"; // O nome do arquivo que será criado na pasta secondFolder
//+------------------------------------------------------------------+
//| Programa Script da função start (iniciar) |
//+------------------------------------------------------------------+
void OnStart()
{
//--- Escreva o manipulador de arquivo aqui
int handle;
//--- Descubra em qual pasta estamos trabalhando
string working_folder=TerminalInfoString(TERMINAL_DATA_PATH)+"\\MQL5\\Files";
//--- Uma mensagem de depuração
PrintFormat("working_folder=%s",working_folder);
//--- Tentando criar uma pasta vazia em relação ao caminho MQL5\Files
if(FolderCreate(firstFolder,0)) // 0 (zero) significa que estamos trabalhando na pasta local do terminal
{
//--- Insira o caminho completo para a pasta criada
PrintFormat("Pasta %s foi criada",working_folder+"\\"+firstFolder);
//--- Redefine o código de erro
ResetLastError();
}
else
PrintFormat("Falha ao criar a pasta %s. Código de erro %d",working_folder+"\\"+firstFolder, GetLastError());
//--- Agora, crie uma pasta não-vazia utilizando a função FileOpen()
string filepath=secondFolder+"\\"+filename; // Formar caminho do arquivo que desejamos abrir para escrever numa pasta inexistente
handle=FileOpen(filepath,FILE_WRITE|FILE_TXT); // Flag FILE_WRITE neste caso é obrigatória, consulte Ajuda para FileOpen
if(handle!=INVALID_HANDLE)
PrintFormat("Arquivo %s foi aberto para leitura",working_folder+"\\"+filepath);
else
PrintFormat("Falha para criar arquivo %s na pasta %s. Código de erro=",filename,secondFolder, GetLastError());
Comment(StringFormat("Preparar para deletar pastas %s e %s", firstFolder, secondFolder));
//--- Uma pequena pausa de 5 segundos para ler uma mensagem no gráfico
Sleep(5000); // Sleep() não pode ser utilizado em indicadores!
//--- Mostrar uma caixa de diálogo e pedir ao usuário
int choice=MessageBox(StringFormat("Você quer apagar pastas %s e %s?", firstFolder, secondFolder),
"Deletando pastas",
MB_YESNO|MB_ICONQUESTION); // Dois botões - "Yes" e "No"
//--- Executar uma ação dependendo da variante selecionada
if(choice==IDYES)
{
//--- Excluir no gráfico o formulário de comentário
Comment("");
//--- Adicione uma mensagem dentro do jornal "Experts"
PrintFormat("Tentando deletar pastas %s e %s",firstFolder, secondFolder);
ResetLastError();
//--- Deletar uma pasta vazia
if(FolderDelete(firstFolder))
//--- A seguinte mensagem deve aparecer uma vez que a pasta está vazia
PrintFormat("Pasta %s foi deletada com sucesso",firstFolder);
else
PrintFormat("Falha para deletar pasta %s. Código de erro=%d", firstFolder, GetLastError());
ResetLastError();
//--- Deletar a pasta que contém um arquivo
if(FolderDelete(secondFolder))
PrintFormat("Pasta %s foi deletada com sucesso", secondFolder);
else
//--- A seguinte mensagem deve aparecer uma vez que a pasta contém um arquivo
PrintFormat("Falha para deletar pasta %s. Código de erro=%d", secondFolder, GetLastError());
}
else
Print("Exclusão cancelada");
//---
}
|