FolderDelete

Supprime le répertoire indiqué. Si le dossier n'est pas vide, elle ne peut pas être supprimé.

bool  FolderDelete(
   string  folder_name,       // chaîne avec le nom du dossier supprimé
   int     common_flag=0      // domaine d'action
   );

Paramètres

folder_name

[in]   Le nom du répertoire, qu'il faut supprimer.  Contient le chemin complet vers le dossier.

common_flag=0

[in] Le drapeau, définissant la situation du répertoire. Si common_flag=FILE_COMMON, le répertoire se trouve dans le dossier commun de tous les terminaux de client \Terminal\Common\Files. Dans le cas contraire le répertoire se trouve dans le dossier local (MQL5\files ou MQL5\tester\files en cas du test).

La valeur rendue

Rend true en cas du succès, autrement rend false.

Note

Si le répertoire contient au moins un fichier et/ou le sous-répertoire, l'effacement d'un tel répertoire est impossible, il est nécessaire préalablement de l'effacer. Le nettoyage total du dossier de tous les fichiers et les sous-dossiers inclus s'effectue à l'aide de la fonction FolderClean().

Exemple:

//+------------------------------------------------------------------+
//|                                            Demo_FolderDelete.mq5 |
//|                         Copyright 2000-2024, MetaQuotes Ltd. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2000-2024, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//--- la description
#property description "Le script montre un exemple de l'utilisation FolderDelete()."
#property description "D'abord, deux dossiers sont créés, l'un est vide et l'autre contient le fichier."
#property description "Si vous essayez de supprimer un dossier non vide vous recevrez l'erreur et l'avertissement."
 
//--- montrons la fenêtre des paramètres d'entrée au lancement du script
#property script_show_inputs
//--- les paramètres d'entrée
input string   firstFolder="empty";    // un dossier vide
input string   secondFolder="nonempty";// le dossier, dans lequel il y aura un fichier
string filename="delete_me.txt";       // le nom du fichier que nous créons dans le dossier secondFolder
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- écrivons ici le handle du fichier
   int handle;
//---savons dans quel dossier nous travaillons
   string working_folder=TerminalInfoString(TERMINAL_DATA_PATH)+"\\MQL5\\Files";
//--- le message de débogage   
   PrintFormat("working_folder=%s",working_folder);
//--- la tentative de créer le dossier vide par rapport au chemin MQL5\Files
   if(FolderCreate(firstFolder,0)) // 0 signifie que nous travaillons dans un dossier local du terminal
     {
      //--- déduisons un chemin complet jusqu'au dossier créé
      PrintFormat("On a créé le dossier %s",working_folder+"\\"+firstFolder);
      //--- oblitérons le code de l'erreur
      ResetLastError();
     }
   else
      PrintFormat("On n'a pas réussi à créer le dossier %s. Le code de l'erreur %d",working_folder+"\\"+firstFolderGetLastError());
 
//--- maintenant nous créons le dossier non vide à l'aide de la fonction FileOpen()
   string filepath=secondFolder+"\\"+filename;  // formeront le chemin vers le fichier lequel nous voulons ouvrir pour l'enregistrement dans un dossier inexistant 
   handle=FileOpen(filepath,FILE_WRITE|FILE_TXT); // le drapeau FILE_WRITE dans ce cas est nécessaire, à voir la référence à la fonction FileOpen
   if(handle!=INVALID_HANDLE)
      PrintFormat("on a ouvert le fichier pour la lecture %s",working_folder+"\\"+filepath);
   else
      PrintFormat("On n'a pas réussi à créer le fichier %s dans le dossier %s. Le code de l'erreur =",filename,secondFolderGetLastError());
 
   Comment(StringFormat("préparons de supprimer les dossiers %s et %s"firstFoldersecondFolder));
//--- Une petite pause à 5 secondes pour que nous puissions lire le message sur le graphique 
   Sleep(5000); // Sleep() on ne peut pas utiliser dans les indicateurs!
 
//--- déduisons la boîte de dialogue et nous demandons à l'utilisateur 
   int choice=MessageBox(StringFormat("Supprimer les dossiers %s et %s?"firstFoldersecondFolder),
                         "La suppression des dossiers",
                         MB_YESNO|MB_ICONQUESTION); //  Il y aura deux boutons - "Yes" et "No"
 
//--- effectuons des actions selon l'option choisie 
   if(choice==IDYES)
     {
      //--- effaçons le commentaire sur le graphique
      Comment("");
      //--- déduisons le message au journal "Experts"
      PrintFormat("Essayons de supprimer les dossiers %s et %s",firstFoldersecondFolder);
      ResetLastError();
      //--- supprimons un dossier vide
      if(FolderDelete(firstFolder))
         //--- doivent voir ce message, puisque le dossier est vide
         PrintFormat("Le dossier %s est supprimé avec succès",firstFolder);
      else
         PrintFormat("On n'a pas réussi à supprimer le dossier %s. Le code de l'erreur=%d"firstFolderGetLastError());
 
      ResetLastError();
      //--- supprimons le dossier qui contient le fichier 
      if(FolderDelete(secondFolder))
         PrintFormat("Le dossier %s est supprimé avec succès"secondFolder);
      else
         //--- doivent voir ce message, puisque dans le dossier il y a un fichier
         PrintFormat("On n'a pas réussi à supprimer le dossier %s. Le code de l'erreur=%d"secondFolderGetLastError());
     }
   else
      Print("La suppression est annulée");
//---
  }

Voir aussi

FileOpen(), FolderClean(), FileMove()