//+--------------------------------------------------------------------------------+
//| 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+"\\"+firstFolder, GetLastError());
//--- 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,secondFolder, GetLastError());
Comment(StringFormat("Prepare to delete folders %s and %s", firstFolder, secondFolder));
//--- 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?", firstFolder, secondFolder),
"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",firstFolder, secondFolder);
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", firstFolder, GetLastError());
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", secondFolder, GetLastError());
}
else
Print("Eliminazione annullata");
//---
}
|