FileSelectDialog

Crée une boîte de dialogue d'ouverture/création d'un fichier ou d'un répertoire.

int  FileSelectDialog(
   string   caption,              // en-tête de la fenêtre
   string   initial_dir,          // répertoire initial
   string   filter,               // filtre d'extensions
   uint     flags,                // combinaison de flags
   string&  filenames[],          // tableau avec les noms des fichiers
   string   default_filename      // nom de fichier par défaut
   );

Paramètres

caption

[in]  En-tête de la boîte de dialogue.

initial_dir

[in]  Nom du répertoire initial relativement à MQL5\Files, dont le contenu est affiché dans la boîte de dialogue. Si la valeur est NULL, le répertoire MQL5\Files est affiché.

filter

[in]  Filtre d'extensions des fichiers à afficher dans la boîte de sélection. Les fichiers ayant un autre format sont cachés.

flags

[in] Combinaison de flags définissant le mode de la fenêtre de dialogue. Les flags sont définis comme suit :
FSD_WRITE_FILE — boîte de dialogue d'ouverture de fichier ;
FSD_SELECT_FOLDER — permet la sélection des répertoires uniquement ;
FSD_ALLOW_MULTISELECT — permet la sélection de plusieurs fichiers ;
FSD_FILE_MUST_EXIST — les fichiers sélectionnés doivent exister ;
FSD_COMMON_FOLDER — le fichier est situé dans le répertoire commun à tous les terminaux clients \Terminal\Common\Files.

filenames[]

[out]  Tableau de chaînes de caractères dans lequel sont placés les fichiers/répertoires sélectionnés.

default_filename

[in]  Nom du fichier/répertoire par défaut. S'il est spécifié, le nom est automatiquement ajouté à la boîte de dialogue et est retourné dans le tableau filenames[] lors des tests.

 

Valeur de Retour

En cas de succès, la fonction retourne le nombre de fichiers sélectionnés dont les noms sont dans filenames[]. Si l'utilisateur ferme la boîte de dialogue dans avoir sélectionné de fichier, la fonction retourne 0. En cas d'exécution infructueuse, une valeur inférieure à 0 est retournée. Le code d'erreur peut être obtenu avec GetLastError().

Note

Pour des raisons de sécurité, l'utilisation de fichiers est strictement contrôlée dans le langage MQL5. Les fichiers utilisés dans les opérations sur les fichiers avec le langage MQL5 ne peuvent pas être situés en dehors du bac à sable (c'est à dire en dehors du répertoire MQL5\Files).

Le nom initial_dir est recherché dans le répertoire du terminal client dans MQL5\Files (ou répertoire_agent_de_test\MQL5\Files en cas de test). Si FSD_COMMON_FOLDER est utilisé dans les flags, la recherche du répertoire initial est effectuée dans le répertoire commun à tous les terminaux clients \Terminal\Common\Files.

Le paramètre filter indique les fichiers valides et doit être défini au format "<description 1>|<extension 1>|<description 2>|<extension 2>...", par exemple, "Fichiers texte (*.txt)|*.txt|Tous les fichiers (*.*)|*.*". La première extension "Fichiers texte (*.txt)|*.txt" est sélectionnée comme type de fichier par défaut.

Si filter=NULL, le masque de sélection des fichiers dans la boîte de dialogue est "Tous les fichiers (*.*)|*.*|"

Si le paramètre default_filename est défini, un appel à FileSelectDialog() retourne 1, tandis que la valeur default_filename elle-même est copiée dans le tableau filenames[] pendant les tests non visuels.

La fonction ne peut pas être utilisée dans les indicateurs personnalisés car l'appel de FileSelectDialog() suspend le thread d'exécution pendant tout le temps en attendant la réponse de l'utilisateur. Étant donné que tous les indicateurs pour chaque symbole sont exécutés dans un seul thread, une telle suspension rend le fonctionnement de tous les graphiques sur toutes les périodes pour ce symbole impossible.

Exemple :

//+------------------------------------------------------------------+
//| Fonction de démarrage du script                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- récupère les noms des fichiers texte à télécharger depuis le dossier commun des terminaux clients
   string filenames[];
   if(FileSelectDialog("Sélectionner les fichiers à télécharger"NULL
                       "Fichiers texte (*.txt)|*.txt|Tous les fichiers (*.*)|*.*"
                       FSD_ALLOW_MULTISELECT|FSD_COMMON_FOLDERfilenames"data.txt")>0)
     {
      //--- affiche le nom de chaque fichier sélectionné
      int total=ArraySize(filenames);
      for(int i=0i<totali++)
         Print(i": "filenames[i]);
     }
   else
     {
     Print("Aucun fichier sélectionné");
     }
//---
  }

Voir aussi

FileOpen, FileIsExist, FileDelete, FileMove, FolderCreate, FolderDelete, FolderClean, Flags d'ouverture des fichiers