//+--------------------------------------------------------------------------------+
//| Demo_FolderClean.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 FolderClean()."
#property description "Prima, i file vengono creati nella cartella specificata usando la funzione FileOpen()."
#property description "Quindi, prima che i file vengano eliminati, un avviso viene mostrato usando il MessageBox()."
//--- Mostra la finestra di dialogo dei parametri di input quando inizia lo script
#property script_show_inputs
//--- parametri di Input
input string foldername="demo_folder"; // Crea una cartella in MQL5/Files/
input int files=5; // Il numero di file per creare ed eliminare
//+--------------------------------------------------------------------------------+
//| Funzione di avvio del programma Script |
//+--------------------------------------------------------------------------------+
voidOnStart()
{
string name="testfile";
//--- Prima apre o crea i file nella cartella dati del terminale
for(int N=0;N<files;N++)
{
//--- Il nome del file in forma di 'demo_folder\testfileN.txt'
string filemane=StringFormat("%s\\%s%d.txt",foldername,name,N);
//--- Apre il file con il flag per la scrittura, in questo caso, la cartella 'demo_folder' verrà creata automaticamente
int handle=FileOpen(filemane,FILE_WRITE);
//--- Rileva se la funzione FileOpen() ha avuto successo
if(handle==INVALID_HANDLE)
{
PrintFormat("Fallimento nel creare il file %s. Error code",filemane,GetLastError());
ResetLastError();
}
else
{
PrintFormat("Il file %s è stato aperto con successo",filemane);
//--- Il file aperto non serve più, quindi viene chiuso
FileClose(handle);
}
}
//--- Controlla il numero di file nella cartella
int k=FilesInFolder(foldername+"\\*.*",0);
PrintFormat("La cartella %s contiene in totale %d file",foldername,k);
//--- Mostra una finestra per chiedere all'utente
int choice=MessageBox(StringFormat("Stai per eliminare %d file dalla cartella %s. Sei sicuro di voler continuare?",foldername,k),
"Elimina i file dalla cartella",
MB_YESNO|MB_ICONQUESTION); // Due bottoni - "Si" e "No" ("Yes" e "No")
ResetLastError();
//--- Esegue l'azione a seconda della variante selezionata
if(choice==IDYES)
{
//--- Inizia ad eliminare i file
PrintFormat("Prova ad eliminare tutti i file dalla cartella %s",foldername);
if(FolderClean(foldername,0))
PrintFormat("I file sono stati eliminati con successo, %d file rimasti nella cartella %s",
foldername,
FilesInFolder(foldername+"\\*.*",0));
else
PrintFormat("Fallimento nell'eliminare i file dalla cartella %s. Codice errore %d",foldername,GetLastError());
}
else
PrintFormat("Eliminazione annullata");
//---
}
//+--------------------------------------------------------------------------------+
//| Restituisce il numero di file nella cartella specificata |
//+--------------------------------------------------------------------------------+
int FilesInFolder(string path,int flag)
{
int count=0;
long handle;
string filename;
//---
handle=FileFindFirst(path,filename,flag);
//--- Se almeno un file viene trovato, cerca per più file
if(handle!=INVALID_HANDLE)
{
//--- Mostra il nome del file
PrintFormat("Il file %s è stato trovato",filename);
//--- Incrementa il contatore dei file/cartelle trovati
count++;
//--- Inizia la ricerca in tutti i file/cartelle
while(FileFindNext(handle,filename))
{
PrintFormat("Il file %s è stato trovato",filename);
count++;
}
//--- Non dimenticare di chiudere l'handle di ricerca una volta completata
FileFindClose(handle);
}
else // Fallimento nell'ottenere l'handle
{
PrintFormat("Ricerca file nella cartella %s fallita",path);
}
//--- Restituisce il risultato
return count;
}
|