//+------------------------------------------------------------------+ //| 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"); //--- } |