FileSelectDialog

Crea una finestra di dialogo di apertura/creazione di file o cartelle.

int  FileSelectDialog(
   string   caption,              // header della finestra
   string   initial_dir,          // directory iniziale
   string   filter,               // filtro di estensione
   uint     flags,                // combinazione di flags
   string&  filenames[],          // array con nomi di file
   string   default_filename      // nome predefinito del file
   );

Parametri

caption

[in] Header della finestra di dialogo.

initial_dir

[in] Nome della directory iniziale relativo a MQL5\Files, il cui contenuto deve essere visualizzato nella finestra di dialogo. Se il valore è NULL, MQL5\Files viene visualizzato nella finestra di dialogo.

filter

[in] Filtro di estensione dei file da visualizzare nella finestra di dialogo di selezione. I file di altri formati sono nascosti.

flags

[nel] Combinazione di flags definizione della modalità della finestra di dialogo. I flag sono definiti come segue:
FSD_WRITE_FILE – finestra di dialogo di apertura file;
FSD_SELECT_FOLDER – consente solo la selezione di cartelle;
FSD_ALLOW_MULTISELECT – consente la selezione di più file;
FSD_FILE_MUST_EXIST – i file selezionati dovrebbero esistere;
FSD_COMMON_FOLDER – il file si trova nella cartella comune di tutti i terminali client \Terminal\Common\Files.

filenames[]

[out] Array di stringhe in cui vengono inseriti i nomi dei file/cartelle selezionati.

default_filename

[in] Nome file/cartella predefinito. Se specificato, un nome viene automaticamente aggiunto alla finestra di dialogo aperta e restituito nell'array filenames[] durante il test.

 

Valore di Ritorno

In caso di completamento corretto, la funzione restituisce il numero di file selezionati i cui nomi è possibile ottenerli da filenames[]. Se un utente chiude la finestra di dialogo senza selezionare un file, la funzione restituisce 0. In caso di esito negativo, viene restituito un valore inferiore a 0. Il codice di errore può essere ottenuto utilizzando GetLastError().

Nota

Per motivi di sicurezza, lavorare con i file è rigorosamente controllato nel linguaggio MQL5. I file utilizzati nelle operazioni sui file mediante il linguaggio MQL5 non possono trovarsi al di fuori della sandbox dei file (vale a dire, al di fuori della directory MQL5\Files).

Il nome initial_dir viene cercato nella directory del terminale client in MQL5\Files (o directory_agente_di_testing\MQL5\Files in caso di testing). Se FSD_COMMON_FOLDER è impostato tra i flag, la ricerca della directory iniziale viene eseguita nella cartella comune di tutti i terminali client \Terminal\Common\Files.

Il parametro filter indica file validi e deve essere impostato nel formato "<descrizione 1>|<estensione 1>|<descrizione 2>|<estensione 2>...", ad esempio," File di testo (*.txt)|*.txt|Tutti i file (*.*)|*.*". La prima estensione "File di testo (*.txt)|*.txt" è selezionata come tipo di file predefinito.

Se filter=NULL, la maschera di selezione dei file nella finestra di dialogo è "Tutti i file (*.*)|*.*|"

Se il parametro default_filename è impostato, chiamando FileSelectDialog() restituisce 1, mentre il valore default_filename stesso viene copiato nell'array filenames[] durante i testing non-visualizzanti.

La funzione non è consigliata per l'uso in indicatori personalizzati, poiché la chiamata FileSelectDialog() sospende il thread di esecuzione dell'indicatore per tutto il tempo in attesa della risposta dell'utente. Poiché tutti gli indicatori per ciascun simbolo vengono eseguiti in un singolo thread, tutti i charts di tutti i timeframes per questo simbolo vengono sospesi.

Esempio:

//+------------------------------------------------------------------+
//| Funzione di avvio del programma di Script                        |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- ottiene i nomi dei file di testo per il download dalla cartella comune dei terminali client
   string filenames[];
   if(FileSelectDialog("Selezionare i file da scaricare"NULL
                       "Text files (*.txt)|*.txt|All files (*.*)|*.*"
                       FSD_ALLOW_MULTISELECT|FSD_COMMON_FOLDERfilenames"data.txt")>0)
     {
      //--- visualizza il nome di ciascun file selezionato
      int total=ArraySize(filenames);
      for(int i=0i<totali++)
         Print(i": "filenames[i]);
     }
   else
     {
     Print("File non selezionato");
     }
//---
  }

Guarda anche

FileOpen, FileIsExist, FileDelete, FileMove, FolderCreate, FolderDelete, FolderClean, Flags di apertura dei file