FileGetInteger

Obtém uma propriedade inteira de um arquivo. Existem duas variantes da função.

1. Obtém a propriedade pelo manipulador de um arquivo.

long  FileGetInteger(
   int                         file_handle,   // Manipular arquivo
   ENUM_FILE_PROPERTY_INTEGER  property_id    // ID Propriedade
   );

2. Obtém a propriedade pelo nome do arquivo.

long  FileGetInteger(
   const string                file_name,            // Nome do arquivo
   ENUM_FILE_PROPERTY_INTEGER  property_id,          // ID Propriedade
   bool                        common_folder=false   // O arquivo é visto em uma pasta local (false)
   );                                                // ou uma pasta comum de todos os terminais (true)

Parâmetros

file_handle

[in]  Descritor de arquivo retornado pelo FileOpen().

file_name

[in]  Nome do arquivo.

property_id

[in]  Propriedade ID do arquivo. O valor pode ser um dos valores da enumeração ENUM_FILE_PROPERTY_INTEGER. Se a segunda variante da função é usada, você pode receber apenas os valores das seguintes propriedades: FILE_EXISTS, FILE_CREATE_DATE, FILE_MODIFY_DATE, FILE_ACCESS_DATE e FILE_SIZE.

common_folder=false

[in]  Pontos para localização de arquivo. Se o parâmetro é false, pasta de dados do terminal é visualizada. Caso contrário, presume-se que o arquivo está na pasta compartilhada por todos os terminais \Terminal\Common\Files(FILE_COMMON).

Valor do Retorno

O valor da propriedade. Em caso de erro, -1 é retornado. Para obter um código de erro usar a função GetLastError().

Se uma pasta está especificada quando obtida a propriedade pelo nome, a função terá erro 5018 (ERR_MQL_FILE_IS_DIRECTORY) em qualquer caso, embora o valor de retorno será correto.

Observação

A função sempre altera o código de erro. Em caso de conclusão bem sucedida, o código de erro é redefinido para NULL.

Exemplo:

//--- mosta a janela dos parâmetros de entrada quando lançado o script
#property script_show_inputs
//--- parâmetros de entrada
input string InpFileName="data.csv";
input string InpDirectoryName="SomeFolder";
//+------------------------------------------------------------------+
//| Programa Script da função start (iniciar)                        |
//+------------------------------------------------------------------+
void OnStart()
  {
   string path=InpDirectoryName+"//"+InpFileName;
   long   l=0;
//--- abre o arquivo
   ResetLastError();
   int handle=FileOpen(path,FILE_READ|FILE_CSV);
   if(handle!=INVALID_HANDLE)
     {
      //--- imprimir todas as informações sobre o arquivo
      Print(InpFileName," informação de arquivo:");
      FileInfo(handle,FILE_EXISTS,l,"bool");
      FileInfo(handle,FILE_CREATE_DATE,l,"data");
      FileInfo(handle,FILE_MODIFY_DATE,l,"data");
      FileInfo(handle,FILE_ACCESS_DATE,l,"data");
      FileInfo(handle,FILE_SIZE,l,"outros");
      FileInfo(handle,FILE_POSITION,l,"outros");
      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");
      //--- fechar o arquivo
      FileClose(handle);
     }
   else
      PrintFormat("%s arquivo não está aberto, ErrorCode = %d",InpFileName,GetLastError());
  }
//+------------------------------------------------------------------+
//| Mostrar o valor da propriedade de arquivo                        |
//+------------------------------------------------------------------+
void FileInfo(const int handle,const ENUM_FILE_PROPERTY_INTEGER id,
              long l,const string type)
  {
//--- receber o valor da propriedade
   ResetLastError();
   if((l=FileGetInteger(handle,id))!=-1)
     {
      //--- o valor recebido, exibi-lo no formato correto
      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());
  }

Também Veja

Operações de Arquivos, Propriedades de Arquivos