FileGetInteger

Recibe una propiedad de números enteros del archivo. Hay 2 variantes de esta función.

1. Obtención de propiedades por el manejador del archivo.

long  FileGetInteger(
   int                         file_handle,          // manejador del archivo
   ENUM_FILE_PROPERTY_INTEGER  property_id           // identificador de la propiedad
   );

2. Obtención de propiedades por el nombre del archivo.

long  FileGetInteger(
   const string                file_name,            // nombre del archivo
   ENUM_FILE_PROPERTY_INTEGER  property_id,          // identificador de la propiedad
   bool                        common_folder=false   // el archivo se busca en una carpeta local (false)
   );                                                // o en la carpeta común de todos los terminales (true)

Parámetros

file_handle

[in]  Descriptor de archivos devuelto por la función FileOpen().

file_name

[in]  Nombre del archivo.

property_id

[in]  Identificador de la propiedad del archivo. El valor puede ser uno de los valores de la enumeración ENUM_FILE_PROPERTY_INTEGER. Si se utiliza la segunda variante de la función, entonces se puede obtener los valores sólo de las siguientes propiedades: FILE_EXISTS, FILE_CREATE_DATE, FILE_MODIFY_DATE, FILE_ACCESS_DATE y FILE_SIZE.

common_folder=false

[in]  Indica la ubicación del archivo. Si el parámetro es igual a false, entonces se revisa la carpeta de datos del terminal, en caso contrario se supone que el archivo se encuentra en la carpeta común de todos los terminales de cliente \Terminal\Common\Files (FILE_COMMON).

Valor devuelto

Valor de la propiedad. En caso del error la función devuelve -1. Para obtener el código del error, se debe llamar a la función GetLastError().

Si durante la obtención de propiedades por el nombre se especifica una carpeta, en cualquier caso la función pondrá el error 5018 (ERR_MQL_FILE_IS_DIRECTORY), y el valor devuelto será correcto.

Nota

La función siempre cambia el código del error. En caso de una finalización con éxito el código del error se pone a cero.

Ejemplo:

//--- mostramos la ventana de parámetros de entrada al arrancar el script
#property script_show_inputs
//--- parámetros de entrada
input string InpFileName="data.csv";
input string InpDirectoryName="SomeFolder";
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string path=InpDirectoryName+"//"+InpFileName;
   long   l=0;
//--- abrimos el archivo
   ResetLastError();
   int handle=FileOpen(path,FILE_READ|FILE_CSV);
   if(handle!=INVALID_HANDLE)
     {
      //--- imprimimos toda la información sobre el archivo
      Print(InpFileName," file info:");
      FileInfo(handle,FILE_EXISTS,l,"bool");
      FileInfo(handle,FILE_CREATE_DATE,l,"date");
      FileInfo(handle,FILE_MODIFY_DATE,l,"date");
      FileInfo(handle,FILE_ACCESS_DATE,l,"date");
      FileInfo(handle,FILE_SIZE,l,"other");
      FileInfo(handle,FILE_POSITION,l,"other");
      FileInfo(handle,FILE_END,l,"bool");
      FileInfo(handle,FILE_IS_COMMON,l,"bool");
      FileInfo(handle,FILE_IS_TEXT,l,"bool");
      FileInfo(handle,FILE_IS_BINARY,l,"bool");
      FileInfo(handle,FILE_IS_CSV,l,"bool");
      FileInfo(handle,FILE_IS_ANSI,l,"bool");
      FileInfo(handle,FILE_IS_READABLE,l,"bool");
      FileInfo(handle,FILE_IS_WRITABLE,l,"bool");
      //--- cerramos el archivo
      FileClose(handle);
     }
   else
      PrintFormat("%s file is not opened, ErrorCode = %d",InpFileName,GetLastError());
  }
//+------------------------------------------------------------------+
//| Visualización del valor de la propiedad del archivo                              |
//+------------------------------------------------------------------+
void FileInfo(const int handle,const ENUM_FILE_PROPERTY_INTEGER id,
              long l,const string type)
  {
//--- obtenemos el valor de la propiedad
   ResetLastError();
   if((l=FileGetInteger(handle,id))!=-1)
     {
      //--- valor recibido, vamos a mostrarlo en el formato correcto
      if(!StringCompare(type,"bool"))
         Print(EnumToString(id)," = ",l ? "true" : "false");
      if(!StringCompare(type,"date"))
         Print(EnumToString(id)," = ",(datetime)l);
      if(!StringCompare(type,"other"))
         Print(EnumToString(id)," = ",l);
     }
   else
      Print("Error, Code = ",GetLastError());
  }

Véase también

Operaciones con archivos, Propiedades de archivos