FileGetInteger

파일의 정수 속성을 가져옵니다. 이 함수에는 두 가지 변수가 있습니다.

1. 파일 핸들로 속성을 가져옵니다.

long  FileGetInteger(
   int                         file_handle,   // 파일 핸들
   ENUM_FILE_PROPERTY_INTEGER  property_id    // 속성 ID
   );

2. 파일 이름으로 속성을 가져옵니다.

long  FileGetInteger(
   const string                file_name,            // 파일명
   ENUM_FILE_PROPERTY_INTEGER  property_id,          // 속성 ID
   bool                        common_folder=false   // 파일이 로컬 폴더에 표시됨 (false)
   );                                                // 아니면 모든 터미널의 공통 폴더에 (true)

Parameters

file_handle

[in] FileOpen()에서 반환된 파일 설명자.

file_name

[in]  파일명.

property_id

[in]  파일 속성 ID. 이 값은 ENUM_FILE_PROPERTY_INTEGER 열거값 중 하나일 수 있습니다. 함수의 두번째 변수가 사용되는 경우 다음 속성의 값만 수신할 수 있습니다: FILE_EXISTS, FILE_CREATE_DATE, FILE_MODIFY_DATE, FILE_ACCESS_DATE and FILE_SIZE.

common_folder=false

[in]  파일 위치를 가리킴. 매개 변수가 false이면 터미널 데이터 폴더가 표시됩니다. 그렇지 않으면 파일이 모든 터미널의 공유폴더인 \Terminal\Common\Files (FILE_COMMON)에 있다고 가정합니다.

반환 값

속성 값. 오류가 발생하면 -1이 반환됩니다. 오류 코드를 가져오려면 GetLastError() 함수를 사용합니다.

이름으로 속성을 가져올 때 폴더를 지정하면 반환 값은 정확하지만 함수에 오류 5018(ERR_MQL_FILE_IS_DIRECTORY)이 발생합니다.

참고

이 함수는 항상 오류 코드를 변경합니다. 성공적으로 완료되면 오류 코드가 NULL로 재설정됩니다.

예:

//--- 스크립트를 시작할 때 입력 매개 변수 창을 표시합니다
#property script_show_inputs
//--- 입력 매개 변수
input string InpFileName="data.csv";
input string InpDirectoryName="SomeFolder";
//+------------------------------------------------------------------+
//| 스크립트 프로그램 시작 함수                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string path=InpDirectoryName+"//"+InpFileName;
   long   l=0;
//--- 파일 열기
   ResetLastError();
   int handle=FileOpen(path,FILE_READ|FILE_CSV);
   if(handle!=INVALID_HANDLE)
     {
      //--- 파일에 관한 모든 정보 출력
      Print(InpFileName," 파일 정보:");
      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");
      //--- 파일 닫기
      FileClose(handle);
     }
   else
      PrintFormat("%s file is not opened, ErrorCode = %d",InpFileName,GetLastError());
  }
//+------------------------------------------------------------------+
//| 파일 속성 값 표시                           |
//+------------------------------------------------------------------+
void FileInfo(const int handle,const ENUM_FILE_PROPERTY_INTEGER id,
              long l,const string type)
  {
//--- 속성값 수령
   ResetLastError();
   if((l=FileGetInteger(handle,id))!=-1)
     {
      //--- 수신된 값을 올바른 형식으로 표시
      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());
  }

더 보기

File Operations, File Properties