//+------------------------------------------------------------------+
//| Demo_FolderDelete.mq5 |
//| Copyright 2000-2024, MetaQuotes Ltd. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2000-2024, MetaQuotes Ltd."
#property link "https://team.metaquotes.ru/email/view/599588"
#property version "1.00"
//--- descripción
#property description "El script muestra el ejemplo del uso de FolderDelete()."
#property description "Primero se crean dos carpetas: una está vacía, la otra contiene el archivo."
#property description "Cuando se intenta eliminar la carpeta no vacía, se devuelve el error y se muestra la advertencia."
//--- mostraremos la ventana de los parámetros de entrada durante el inicio del script
#property script_show_inputs
//--- parámetros de entrada
input string firstFolder="empty"; // carpeta vacía
input string secondFolder="nonempty";// carpeta que va a contener un archivo
string filename="delete_me.txt"; // nombre del archivo que vamos a crear en la carpeta secondFolder
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//--- escribiremos el manejador del archivo aquí
int handle;
//--- buscaremos la carpeta en la que trabajamos
string working_folder=TerminalInfoString(TERMINAL_DATA_PATH)+"\\MQL5\\Files";
//--- mensaje de depuración
PrintFormat("working_folder=%s",working_folder);
//--- intento de crear una carpeta vacía respecto a la ruta MQL5\Files
if(FolderCreate(firstFolder,0)) // 0 significa que estamos trabajando en la carpeta local del terminal
{
//--- mostraremos la ruta completa de la carpeta creada
PrintFormat("Hemos creado la carpeta %s",working_folder+"\\"+firstFolder);
//--- anularemos el código del error
ResetLastError();
}
else
PrintFormat("Fallo al crear la carpeta %s. Código del error %d",working_folder+"\\"+firstFolder, GetLastError());
//--- ahora crearemos una carpeta no vacía usando la función FileOpen()
string filepath=secondFolder+"\\"+filename; // formaremos la ruta para el archivo que queremos abrir para la escritura en la carpeta no existente
handle=FileOpen(filepath,FILE_WRITE|FILE_TXT); // la bandera FILE_WRITE es obligatoria en este caso, ver la ayuda sobre la función FileOpen
if(handle!=INVALID_HANDLE)
PrintFormat("El archivo %s ha sido abierto para la lectura",working_folder+"\\"+filepath);
else
PrintFormat("Fallo al crear el archivo %s en la carpeta %s. Código del error=",filename,secondFolder, GetLastError());
Comment(StringFormat("Preparándose para eliminar las carpetas %s y %s", firstFolder, secondFolder));
//--- Una pequeña pausa de 5 segundos para que nos de tiempo a leer el mensaje en el gráfico
Sleep(5000); // ¡No se puede usar Sleep() en los indicadores!
//--- mostramos la ventana de diálogo y pedimos al usuario
int choice=MessageBox(StringFormat("¿Desea eliminar las carpetas %s y %s?", firstFolder, secondFolder),
"Eliminando carpetas",
MB_YESNO|MB_ICONQUESTION); // habrá dos botones - "Yes" y "No"
//--- ejecutaremos la acción en función de la opción escogida
if(choice==IDYES)
{
//--- quitamos el comentario del gráfico
Comment("");
//--- mostraremos el mensaje en el diario "Asesores Expertos"
PrintFormat("Intentamos eliminar las carpetas %s y %s",firstFolder, secondFolder);
ResetLastError();
//--- eliminamos la carpeta vacía
if(FolderDelete(firstFolder))
//--- debe aparecer el siguiente mensaje porque la carpeta está vacía
PrintFormat("La carpeta %s ha sido eliminada con éxito",firstFolder);
else
PrintFormat("Fallo al eliminar la carpeta %s. Código del error=%d", firstFolder, GetLastError());
ResetLastError();
//--- eliminamos la carpeta que contiene el archivo
if(FolderDelete(secondFolder))
PrintFormat("La carpeta %s ha sido eliminada con éxito", secondFolder);
else
//--- debe aparecer este mensaje porque hay un archivo dentro de la carpeta
PrintFormat("Fallo al eliminar la carpeta %s. Código del error=%d", secondFolder, GetLastError());
}
else
Print("Eliminación cancelada");
//---
}
|