FileSelectDialog

파일 또는 폴더 오프닝/생성 다이얼로그 생성.

int  FileSelectDialog(
   string   caption,              // 윈도우 헤더
   string   initial_dir,          // 초기 디렉토리
   string   filter,               // 확장 필터
   uint     flags,                // 플래그 조합
   string&  filenames[],          // 파일 이름이 있는 배열
   string   default_filename      // 디폴트 파일명
   );

Parameters

caption

[in]  대화창 헤더.

initial_dir

[in]  MQL5\Files에 상대적인 초기 디렉터리 이름, 내용은 대화 상자에 표시됨. 값이 NULL이면, MQL5\Files 가 대화상자에 표시됩니다.

filter

[in]  선택 대화 상자에 표시할 파일의 확장자 필터. 다른 형식의 파일은 숨겨집니다.

flags

[in] 대화 창 모드를 정의하는 플래그 조합. 플래그는 다음과 같이 정의됩니다:
FSD_WRITE_FILE – 파일 오픈 다이얼로그;
FSD_SELECT_FOLDER – 폴더 선택만 허용;
FSD_ALLOW_MULTISELECT – 여러 파일 선택 허용;
FSD_FILE_MUST_EXIST – 선택한 파일이 있어야 함;
FSD_COMMON_FOLDER – 파일은 모든 클라이언트 터미널의 공통 폴더 terminals \Terminal\Common\Files에 있습니다.

filenames[]

[out]  선택한 파일/폴더의 이름이 배치되는 문자열 배열.

default_filename

[in]  디폴트 파일/폴더명. 지정된 경우 열린 대화 상자에 이름이 자동으로 추가되고 테스트 시 filenames[] 배열에 반환됩니다.

 

반환 값

성공적으로 완료되면 filenames[]에서 이름을 얻을 수 있는 선택한 파일의 수를 반환합니다. 사용자가 파일을 선택하지 않고 대화상자를 닫으면 함수는 0을 반환합니다. 실행에 실패하면, 0보다 작은 값이 반환됩니다. 오류 코드는 GetLastError()을 사용하여 획득할 수 있습니다.

참고

보안을 위해 MQL5 언어로 파일 작업을 엄격하게 제어합니다. MQL5 언어로 파일 작업에 사용되는 파일은 파일 샌드박스 외부(즉, MQL5\Files 디렉터리 외부)에 있을 수 없습니다.

initial_dir 이름은 클라이언트 터미널의 디렉터리에서 MQL5\Files(또는 testing_agent_directory\MQL5\Files\)로 검색됩니다. If FSD_COMMON_FOLDER is set among the flags, the search for the initial directory is performed in the common folder of all client terminals \Terminal\Common\Files.

filter 파라미터는 유효한 파일을 나타내므로 다음과 같이 설정해야 합니다 "<description 1>|<extension 1>|<description 2>|<extension 2>..." 형태, 예를 들면, "Text files (*.txt)|*.txt|All files (*.*)|*.*". 첫 번째 확장자 "텍스트 파일(*.txt)|*.txt"가 기본 파일 형식으로 선택됩니다.

filter=NULL 일 경우, 대화창에서 파일 선택 마스크는 다음과 같습니다 "All Files (*.*)|*.*|"

default_filename 파라미터를 설정한 경우, FileSelectDialog()를 호출하면 1이 반환되며, 시각화되지 않은 테스트 중에 default_filename 값 자체가 filenames[] 배열에 복제됩니다.

FileSelectDialog()를 호출하면 사용자의 응답을 기다리는 동안 내내 실행 스레드 가 일시 중단되므로 커스텀 지표에 이 기능을 사용할 수 없습니다. 각 심볼에 대한 모든 지표가 단일 스레드로 실행되기 때문에 이러한 보류는 이 심볼에 대한 모든 시간대의 모든 차트를 작동할 수 없게 합니다.

예:

//+------------------------------------------------------------------+
//| 스크립트 프로그램 시작 함수                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- 클라이언트 터미널의 공통 폴더에서 다운로드할 텍스트 파일의 이름을 가져옵니다.
   string filenames[];
   if(FileSelectDialog("다운로드할 파일을 선택하세요"NULL
                       "Text files (*.txt)|*.txt|All files (*.*)|*.*"
                       FSD_ALLOW_MULTISELECT|FSD_COMMON_FOLDERfilenames"data.txt")>0)
     {
      //--- 선택한 각 파일의 이름 표시
      int total=ArraySize(filenames);
      for(int i=0i<totali++)
         Print(i": "filenames[i]);
     }
   else
     {
     Print("파일이 선택되지 않았습니다");
     }
//---
  }

더 보기

FileOpen, FileIsExist, FileDelete, FileMove, FolderCreate, FolderDelete, FolderClean, Flags of opening files