//+------------------------------------------------------------------+
//| Demo_FolderClean.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 FolderClean()."
#property description "D'abord on crée les fichiers dans le dossier indiqué à l'aide de la fonction FileOpen()."
#property description "Puis, avant la suppression des fichiers on déduit l'avertissement MessageBox()."
//--- Nous 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 foldername="demo_folder"; // créons le dossier dans MQL5/Files/
input int files=5; // Combien de fichiers nous créons et nous supprimons
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
string name="testfile";
//--- d'abord nous ouvrirons ou nous créons les fichiers dans le dossier des données de notre terminal
for(int N=0;N<files;N++)
{
//--- collectons le nom du fichier comme 'demo_folder\testfileN.txt'
string filemane=StringFormat("%s\\%s%d.txt",foldername,name,N);
//--- ouvrons le fichier avec le drapeau sur l'enregistrement, dans ce cas le dossier ' demo_folder ' sera automatiquement créé
int handle=FileOpen(filemane,FILE_WRITE);
//--- connaissons, autant la fonction a été accompli avec succès FileOpen()
if(handle==INVALID_HANDLE)
{
PrintFormat("On n'a pas réussi à créer le fichier %s. Le code de l'erreur ",filemane,GetLastError());
ResetLastError();
}
else
{
PrintFormat("Le fichier %s est ouvert avec succès",filemane);
//--- nous n'avons plus besoin du fichier ouvert, il faut le fermer obligatoirement
FileClose(handle);
}
}
//---vérifions combien de fichiers sont dans le dossier
int k=FilesInFolder(foldername+"\\*.*",0);
PrintFormat("Au total%s on a trouvé %d fichiers",foldername,k);
//--- déduisons la boîte de dialogue et demanderons à l'utilisateur
int choice=MessageBox(StringFormat("Vous allez supprimer %s %d fichiers du dossier, continuer?",foldername,k),
"La suppression des fichiers du dossier",
MB_YESNO|MB_ICONQUESTION); // il y aura deux boutons - "Yes" et "No"
ResetLastError();
//--- accomplirons les actions en fonction de la variante choisie
if(choice==IDYES)
{
//--- commençons à supprimer
PrintFormat("La tentative de supprimer tous les fichiers du dossier %s",foldername);
if(FolderClean(foldername,0))
PrintFormat("Les fichiers sont supprimés avec succès, %s fichiers %d sont réstés dans le dossier",
foldername,
FilesInFolder(foldername+"\\*.*",0));
else
PrintFormat("On n'a pas réussi à supprimer les fichiers du dossier %s. Le code de l'erreur %d",foldername,GetLastError());
}
else
PrintFormat("La suppression est annulée");
//---
}
//+------------------------------------------------------------------+
//| rend le nombre de fichiers dans le dossier |
//+------------------------------------------------------------------+
int FilesInFolder(string path,int flag)
{
int count=0;
long handle;
string filename;
//---
handle=FileFindFirst(path,filename,flag);
//--- Si quand même un fichier est trouvé, nous cherchons les autres
if(handle!=INVALID_HANDLE)
{
//--- déduisons le nom du fichier
PrintFormat("le fichier %s est trouvé",filename);
//--- accroissons le compteur des fichiers/dossiers trouvés
count++;
//--- commençons le balayage de tous les fichiers/dossiers
while(FileFindNext(handle,filename))
{
PrintFormat("le fichier %s a été trouvé",filename);
count++;
}
//--- fermons obligatoirement le handle de la recherche à la fin
FileFindClose(handle);
}
else // on n'a pas réussi à recevoir le handle
{
PrintFormat("On n'a pas réussi à faire la recherche des fichiers dans le dossier %s",path);
}
//--- rendons le résultat
return count;
}
|