//+------------------------------------------------------------------+ //| Demo_FolderDelete.mq5 | //| Copyright 2000-2024, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2000-2024, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //--- 설명 #property description "이 스크립트는 FolderDelete()의 샘플 사용을 보여 줍니다." #property description "처음 두 개의 폴더가 생성되고, 그 중 하나는 비어 있고, 두 번째 폴더는 파일을 포함합니다." #property description "비어 있지 않은 폴더를 삭제하려고 하면 오류가 반환되고 경고가 표시됩니다." //--- 스크립트를 시작할 때 입력 파라미터 대화 상자 표시 #property script_show_inputs //--- 입력 파라미터 input string firstFolder="empty"; // 빈(empty) 폴더 input string secondFolder="nonempty";// 한 파일이 생성될 폴더 string filename="delete_me.txt"; // secondFolder 폴더에 생성할 파일명 //+------------------------------------------------------------------+ //| 스크립트 프로그램 시작 함수 | //+------------------------------------------------------------------+ void OnStart() { //--- 여기에 파일 핸들을 쓰십시오 int handle; //--- 작업 중인 폴더 확인 string working_folder=TerminalInfoString(TERMINAL_DATA_PATH)+"\\MQL5\\Files"; //--- 디버그 메시지 PrintFormat("working_folder=%s",working_folder); //--- 경로 MQL5\Files와 관련한 빈(empty) 폴더 만들기 시도 중 if(FolderCreate(firstFolder,0)) // 0은 터미널의 로컬 폴더에서 작업 중임을 의미합니다 { //--- 생성된 폴더의 전체 경로 입력 PrintFormat("%s 폴더가 생성되었습니다",working_folder+"\\"+firstFolder); //--- 에러코드 재설정 ResetLastError(); } else PrintFormat("%s 폴더 생성 실패. Error code %d",working_folder+"\\"+firstFolder, GetLastError()); //--- 이제 FileOpen() 함수를 사용하여 비어 있지 않은 폴더를 만드십시오 string filepath=secondFolder+"\\"+filename; // 존재하지 않는 폴더에 쓰기 위해 열려는 파일의 양식 경로 handle=FileOpen(filepath,FILE_WRITE|FILE_TXT); // 이 경우 FILE_WRITE 플래그를 지정해야 하며, 파일 열기 도움말을 참조하십시오. if(handle!=INVALID_HANDLE) PrintFormat("%s 파일이 읽기용으로 열렸습니다",working_folder+"\\"+filepath); else PrintFormat("%s 파일을 %s 폴더에 생성 실패. Error code=",filename,secondFolder, GetLastError()); Comment(StringFormat("%s 와 %s 폴더 삭제 준비", firstFolder, secondFolder)); //--- 차트의 메시지를 읽기 위해 5초 정도 잠시 멈춤 Sleep(5000); // Sleep()은 지표에서 사용되지 않습니다! //--- 대화 상자를 표시하고 사용자에게 물음 int choice=MessageBox(StringFormat("%s 및 %s 폴더를 삭제하시겠습니까?", firstFolder, secondFolder), "Deleting folders", MB_YESNO|MB_ICONQUESTION); // Two buttons - "Yes" and "No" //--- 선택한 모델에 따라 작업 실행 if(choice==IDYES) { //--- 차트에서 코멘트 삭제 Comment(""); //--- "Experts" 저널로 메시지 추가 PrintFormat("%s 및 %s 폴더 삭제 시도",firstFolder, secondFolder); ResetLastError(); //--- 빈(empty) 폴더 삭제 if(FolderDelete(firstFolder)) //--- 폴더가 비어 있으므로 다음 메시지가 표시되어야 합니다 PrintFormat("%s 폴더가 성공적으로 삭제되었습니다",firstFolder); else PrintFormat("%s 폴더 삭제 실패. Error code=%d", firstFolder, GetLastError()); ResetLastError(); //--- 파일이 들어 있는 폴더 삭제 if(FolderDelete(secondFolder)) PrintFormat("%s 폴더가 성공적으로 삭제됐습니다", secondFolder); else //--- 폴더에 파일이 포함되어 있으므로 다음 메시지가 표시되어야 합니다 PrintFormat("%s 폴더 삭제 실패. Error code=%d", secondFolder, GetLastError()); } else Print("삭제 취소"); //--- } |