닫지 않은 파일이 포함된 폴더는 삭제되지 않습니다. - 페이지 3

 
Реter Konow :
내가 아는 한, 파일 함수(예: FileWrite())를 사용하여 파일에 변경 사항이 없으면 파일을 닫을 필요가 없습니다. FileOpen() 함수는 단순히 새 파일을 생성하며 이 작업은 파일을 닫을 필요가 없습니다(이 함수에 대한 설명서에는 생성 후 파일을 닫아야 한다고 나와 있지 않습니다).

앗! 스토리텔러 https://docs.mql4.com/en/files/fileopen


//--- "파일 샌드박스"에서 작업하는 올바른 방법
    재설정 마지막 오류 ();
filehandle= 파일 열기 ( "프랙탈.csv" , FILE_WRITE | FILE_CSV ) ;
    if (파일 핸들!= INVALID_HANDLE )
{
       FileWrite (파일 핸들, TimeCurrent (), 기호 (), EnumToString ( ENUM_TIMEFRAMES ( _Period )));
       파일 닫기 (파일 핸들);
       인쇄 ( "파일열기 확인" );
}
    또 다른   프리

FileOpen - Файловые операции - Справочник MQL4
FileOpen - Файловые операции - Справочник MQL4
  • docs.mql4.com
FileOpen - Файловые операции - Справочник MQL4
 
Rashid Umarov :

앗! 스토리텔러 https://docs.mql4.com/en/files/fileopen


내가 말한 것과 반대되는 것은 무엇입니까?

나는 말했다, -

피터 코노우 :
내가 아는 한, 파일 함수(예: FileWrite())를 사용하여 파일에 변경 사항이 없으면 파일을 닫을 필요가 없습니다. FileOpen() 함수는 단순히 새 파일을 생성하며 이 작업은 파일을 닫을 필요가 없습니다(이 함수에 대한 설명서에는 생성 후 파일을 닫아야 한다고 나와 있지 않습니다).


그리고 귀하의 예에서 FileWrite() 함수는 파일이 생성된 직후에 사용됩니다. 그리고 사용 파일 닫기 (파일 핸들);


또한, 위의 스크립트 코드에서 명시적 클로저를 추가했지만, 이것으로 아무것도 해결되지 않았습니다...

 
Реter Konow :

정확히. 이미 하위 폴더와 파일이 포함된 폴더를 삭제하려고 하면 파일을 먼저 삭제합니다. 하위 폴더만 남습니다. FolderClean()으로 정리한 다음 FolderDelete()를 호출합니다. 그러나 결과적으로 비어 있던 하위 폴더는 잘 삭제되지만 하위 폴더 안에 더 많은 하위 폴더가 있으면 삭제되지 않습니다. 그 후 MetaEditor의 파일 탐색기에서 수동으로 폴더를 삭제하려고 시도하지만 터미널은 폴더를 삭제하지 않고 다음 창을 표시합니다.

"계속"을 클릭하고 변경 사항에 동의하지만 폴더는 여전히 지워지지 않습니다. 터미널을 완전히 닫았다가 다시 열면 삭제했어야 하는 폴더가 저절로 사라지거나 하지 않지만 이미 위의 창 없이 수동으로 삭제할 수 있습니다.

여기에 몇 가지 이상한 점이 있습니다 ...

나는 그런 것들을 여러 번 보았다. 어느 시점에서 모든 하위 폴더와 파일이 있는 Files 폴더가 읽기 전용 속성을 갖는다는 것을 알았습니다. 이 플래그를 손으로 제거해도 도움이 되지 않습니다. 그러나 터미널을 다시 시작하면 항상 도움이 됩니다. 재생이 안되어서(안해봤음) SD에 신고하지 않았습니다.

 
A100 :

오류(5022)는 FILE_COMMON 을 설정한 경우에만 발생합니다.

폴더는 지워지지만 삭제되지는 않습니다.

이 플래그를 설정할 필요가 없습니다. 그렇지 않으면 파일이 공유 폴더에서 검색되고 잘못된 디렉토리 이름이 지정되었다는 오류가 표시됩니다.

파일 경로

 "\\MQL4\\Files" ;

이 플래그를 설정할 필요가 없습니다. 그래서 모든 것이 맞습니다.

 
fxsaber :

나는 그런 것들을 여러 번 보았다. 어느 시점에서 모든 하위 폴더와 파일이 있는 Files 폴더가 읽기 전용 속성을 갖는다는 것을 알았습니다. 이 플래그를 손으로 제거해도 도움이 되지 않습니다. 그러나 터미널을 다시 시작하면 항상 도움이 됩니다. 재생이 안되어서(안해봤음) SD에 신고하지 않았습니다.

고맙습니다. 이 문제를 겪고 있는 유일한 사람이 아니어서 다행입니다. 이 문제를 해결하려면 "내 코에서 피를 흘려야" 합니다(그것 없이는 사용자의 파일 탐색기 를 완료할 수 없습니다). 나는 서비스 데스크에 편지를 썼다. 하지만 혹시나 해서 여기에 올립니다. 헛되지 않은 것으로 밝혀졌습니다.)
 
Реter Konow :

이 플래그를 설정할 필요가 없습니다. 그렇지 않으면 파일이 공유 폴더에서 검색되고 잘못된 디렉토리 이름이 지정되었다는 오류가 표시됩니다.

FILE_COMMON 이 있고 없이 - 작동합니다(처음에는 확인할 때 이 플래그를 마지막 if에 넣는 것을 잊었습니다). FILE_COMMON 을 사용하면 모든 작업에 존재하는 것으로 암시되었습니다.

 
Реter Konow :

이 플래그를 설정할 필요가 없습니다. 그렇지 않으면 파일이 공유 폴더에서 검색되고 잘못된 디렉토리 이름이 지정되었다는 오류가 표시됩니다.

파일 경로

이 플래그를 설정할 필요가 없습니다. 그래서 모든 것이 맞습니다.

이 모든 것이 이상합니다. MQL4 폴더 경로에서 코드를 .ex4로 다시 컴파일했는데 이상하게도 코드가 오류 없이 작동하는 것을 확인했습니다. 파일 닫기 를 제거하고 얻었습니다.

 2017.08 . 28 17 : 36 : 18.525 Demo_FolderDelete EURUSD.e,H4: Не удалось удалить папку nonempty. Код ошибки= 5025
2017.08 . 28 17 : 36 : 16.985 Demo_FolderDelete EURUSD.e,H4: Не удалось очистить папку nonempty. Код ошибки= 5026

그런 다음 수정 없이 MT5에서 시작했는데 이상하게도 MQL4 폴더에 대한 언급은 무시되었습니다. 폴더와 파일은 MQL5 폴더에 생성되었습니다. 또한 모든 것이 MT4에서 체크인하는 것과 유사합니다. 닫히지 않은 파일은 삭제되지 않습니다...

 2017.08 . 28 17 : 50 : 45.328 Demo_FolderDelete (CADJPY,H4)   Не удалось очистить папку nonempty. Код ошибки= 5025
2017.08 . 28 17 : 50 : 47.958 Demo_FolderDelete (CADJPY,H4)   Не удалось удалить папку nonempty. Код ошибки= 5024
 
서비스 데스크가 대답했습니다. 그들은 파일을 만든 후에 닫아야 한다고 말했습니다. 그러나 나는 그것을 닫지만 문제는 남아 있습니다 ... 아아 ... (
 
Alexey Viktorov :

이 모든 것이 이상합니다. MQL4 폴더 경로에서 코드를 .ex4로 다시 컴파일했는데 이상하게도 코드가 오류 없이 작동하는 것을 확인했습니다. 파일 닫기 를 제거하고 얻었습니다.

그런 다음 수정 없이 MT5에서 시작했는데 이상하게도 MQL4 폴더에 대한 언급은 무시되었습니다. 폴더와 파일은 MQL5 폴더에 생성되었습니다. 또한 모든 것이 MT4에서 체크인하는 것과 유사합니다. 닫히지 않은 파일은 삭제되지 않습니다...

내 말은, 스크립트에서 고문을 만들고 실행하려고 했습니까?

 
Реter Konow :
그러나 나는 그것을 닫지만 문제는 남아 있습니다 ... 아아 ... (
그리고 모든 곳에 FILE_COMMON 을 넣으십시오.