FolderDelete

La funzione rimuove la directory specificata. Se la cartella non è vuota, allora non può essere rimossa.

bool  FolderDelete(
   string  folder_name,       // Stringa con il nome della cartella da eliminare
   int     common_flag=0      // Ambito
   );

Parametri

folder_name

[in] Il nome della directory che si desidera eliminare. Contiene il percorso completo della cartella.

common_flag=0

[in]Flag determina la posizione della directory. Se common_flag=FILE_COMMON, la directory si trova nella cartella condivisa per tutti i terminali client \Terminal\Common\Files. In caso contrario, la directory si trova in una cartella locale (MQL5\file o MQL5\tester\file in caso di testing).

Valore restituito

Restituisce true se ha successo, altrimenti false.

Nota

Per motivi di sicurezza, il lavoro con i file è strettamente controllato nel linguaggio MQL5. I file con cui sono condotte le operazioni di file utilizzando i mezzi MQL5, non possono esservi al di fuori della sandbox del file.

Se la directory contiene almeno un file e/o sottodirectory, allora questa directory non può essere eliminata, deve essere prima pulita. FolderClean() è usata per pulire una cartella di tutti i suoi file o sottocartelle.

Esempio:

//+--------------------------------------------------------------------------------+
//|                                                          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"
//--- Descrizione
#property description "Lo script mostra un esempio di uso di FolderDelete()."
#property description "Le prime due cartelle sono state create; una di esse è vuota, la seconda contiene un file."
#property description "Quando si prova ed eliminare la cartella non vuota, un errore viene restituito e l'avvertimento visualizzato."
 
//--- Mostra la finestra dei parametri di input quando inizia lo script
#property script_show_inputs
//--- parametri di Input
input string   firstFolder="empty";    // La cartella vuota
input string   secondFolder="nonempty";// La cartella, nel quale un file è stato creato
string filename="delete_me.txt";       // Il nome del file che verrà creato nella cartella secondFolder
//+--------------------------------------------------------------------------------+
//| Funzione di avvio del programma Script                                         |
//+--------------------------------------------------------------------------------+
voidOnStart()
  {
//--- Scrive l'handle del file qui
   int handle;
//--- Rileva in quale cartella stiamo lavorando
   string working_folder=TerminalInfoString(TERMINAL_DATA_PATH)+"\\MQL5\\Files";
//--- Il messaggio di debug  
   PrintFormat("working_folder=%s",working_folder);
//--- Prova a creare una cartella vuota relativa al percorso MQL5\Files
   if(FolderCreate(firstFolder,0)) // 0 significa che stiamo lavorando nella cartella locale del terminale
     {
      //--- Introduce il percorso completo per la cartella creata
      PrintFormat("La cartella %s è stata creata",working_folder+"\\"+firstFolder);
      //--- Resetta il codice errore
      ResetLastError();
     }
   else
      PrintFormat("Fallimento nel creare la cartella %s. Codice errore %d",working_folder+"\\"+firstFolderGetLastError());
 
//--- Ora crea una cartella non vuota usando la funzioneFileOpen()
   string filepath=secondFolder+"\\"+filename;  // Percorso al file che vogliamo aprire per scrivere in una cartella non esistente
   handle=FileOpen(filepath,FILE_WRITE|FILE_TXT); // Flag FILE_WRITE in questo vaso è obbigatoria, vedi l'help per FileOpen
   if(handle!=INVALID_HANDLE)
      PrintFormat("Il file %s è stato aperto per la lettura",working_folder+"\\"+filepath);
   else
      PrintFormat("Fallimento nel creare il file %s nella cartella %s. Error code=",filename,secondFolderGetLastError());
 
   Comment(StringFormat("Prepare to delete folders %s and %s"firstFoldersecondFolder));
//--- Una piccola pausa di 5 secondi per leggere il messaggio nel chart
   Sleep(5000); // Sleep() non può essere usato negli indicatori!
 
//--- Mostra una finestra e chiede all'utente
   int choice=MessageBox(StringFormat("Vuoi eliminare le cartelle %s ed %s?"firstFoldersecondFolder),
                         "Eliminazione cartelle",
                         MB_YESNO|MB_ICONQUESTION); //  Due bottoni - "Yes" e "No"
 
//--- Esegue un'azione a seconda della variante scelta
   if(choice==IDYES)
     {
      //--- Elimina il commento dal chart
      Comment("");
      //--- Aggiunge il messaggio nel journal "Experts"
      PrintFormat("Prova ad eliminare le cartelle %s ed %s",firstFoldersecondFolder);
      ResetLastError();
      //--- Elimina le cartelle vuote
      if(FolderDelete(firstFolder))
         //--- Il seguente messaggio dovrebbe apparire giacchè la cartella è vuota
         PrintFormat("La cartella %s è stata eliminata con successo",firstFolder);
      else
         PrintFormat("Fallimento nell'eliminare la cartella %s. Codice errore=%d"firstFolderGetLastError());
 
      ResetLastError();
      //--- Elimina la cartella che contiene il file
      if(FolderDelete(secondFolder))
         PrintFormat("La cartella %s è stata eliminata con successo"secondFolder);
      else
         //--- Il seguente messaggio dovrebbe apparire giacchè la cartella contiene un file
         PrintFormat("Fallimento nell'eliminare la cartella %s. Codice Errore=%d"secondFolderGetLastError());
     }
   else
      Print("Eliminazione annullata");
//---
  }

Vedi anche

FileOpen(), FolderClean(), FileMove()