FileSelectDialog

Crea una ventana de diálogo para crear/abrir un archivo o carpeta.

int  FileSelectDialog(
   string   caption,              // encabezado de la ventana
   string   initial_dir,          // carpeta inicial
   string   filter,               // filtro de extensiones
   uint     flags,                // combinación de banderas
   string&  filenames[],          // matriz con los nombres de los archivos
   string   default_filename      // nombre del archivo por defecto
   );

Parámetros

caption

[in]  Encabezado de la ventana de diálogo.

initial_dir

[in]  Nombre de la carpeta inicial con respecto a la carpeta MQL5\Files cuyo contenido se mostrará en la ventana de diálogo. Si el valor es igual a NULL, en la ventana de diálogo se mostrará la carpeta MQL5\Files.

filter

[in]  Filtro de extensiones de los archivos que se mostrarán en la ventana de diálogo para su selección. Los archivos de otros formatos permanecerán ocultos.

flags

[in] Combinación de banderas que determina el modo de la ventana de diálogo. Las banderas se determinan de la forma siguiente:
FSD_WRITE_FILE — ventana de diálogo de apertura de archivos;
FSD_SELECT_FOLDER — permite seleccionar solo carpetas;
FSD_ALLOW_MULTISELECT — permite seleccionar varios archivos;
FSD_FILE_MUST_EXIST — los archivos seleccionados deben existir;
FSD_COMMON_FOLDER — el archivo está ubicado en la carpeta general de todos los terminales de cliente \Terminal\Common\Files.

filenames[]

[out]  Matriz de líneas en la que se ubicarán los nombres de los archivos/carpetas elegidos.

default_filename

[in]  Nombre del archivo/carpeta por defecto. Si ha sido establecido, este nombre se añade automáticamente a la ventana de diálogo de apertura, y se retorna en la matriz filenames[] en la simulación.

 

Valor retornado

Si se finaliza con éxito, la función retornará el número de archivos seleccionados cuyos nombres se pueden obtener en filenames[]. Si el usuario no ha seleccionado un archivo y ha cerrado la ventana de diálogo, la función retornará 0. Si se ejecuta sin éxito, se retornará un valor inferior a 0, el código de error se puede obtener con la ayuda de GetLastError().

Observación

Por motivos de seguridad, en el lenguaje MQL5 se controla estrictamente el trabajo con los archivos. Los archivos con los que se realizan operaciones de archivo usando los recursos de MQL5, no pueden encontrarse fuera del "sandbox" de archivo, para ser más exactos, fuera de la carpeta MQL5\Files.

El nombre de la carpeta inicial initial_dir se busca en el terminal de cliente, en la subcarpeta MQL5\Files (o catálogo_de_agente_de_simulación\MQL5\Files, en el caso de simulación). Si entre las banderas se indica FSD_COMMON_FOLDER, la carpeta inicial se buscará en la carpeta general de todos los terminales de cliente \Terminal\Common\Files.

El parámetro filter indica los archivos permitidos, y debe indicarse en el formato "<descripción 1>|<extensión 1>|<descripción 2>|<extensión 2>...". Por ejemplo, "Text files (*.txt)|*.txt|All files (*.*)|*.*", además, en este caso, la primera extensión "Text files (*.txt)|*.txt" se seleccionará como tipo de archivo por defecto.

Si filter=NULL, la máscara de selección de archivos en la ventana de diálogo será "All Files (*.*)|*.*|"

Si se ha establecido el parámetro default_filename, durante la simulación no visual, la llamada de FileSelectDialog() retornará 1, mientras que el propio valor default_filename se copiará en la matriz filenames[].

La función está prohibida en los indicadores de usuario, pues la llamada de FileSelectDialog() interrumpe el funcionamiento del flujo de ejecución mientras se espera la respuesta del usuario. Y puesto que todos los indicadores de cada símbolo se ejecutan en un único flujo, semejante interrupción hará imposible el funcionamiento de todos los gráficos en todos los marcos temporales de este símbolo.

Ejemplo:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- obtenemos los nombres de los archivos de texto para realizar la carga desde la carpeta general de los terminales de cliente
   string filenames[];
   if(FileSelectDialog("Seleccione los archivos para la carga"NULL
                       "Text files (*.txt)|*.txt|All files (*.*)|*.*"
                       FSD_ALLOW_MULTISELECT|FSD_COMMON_FOLDERfilenames"data.txt")>0)
     {
      //--- mostramos el nombre de cada archivo seleccionado
      int total=ArraySize(filenames);
      for(int i=0i<totali++)
         Print(i": "filenames[i]);
     }
   else
     {
     Print("Files not selected");
     }
//---
  }

Ver también

FileOpen, FileIsExist, FileDelete, FileMove, FolderCreate, FolderDelete, FolderClean, banderas de apertura de archivos