//+------------------------------------------------------------------+
//| 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("삭제 취소");
//---
}
|