오류, 버그, 질문 - 페이지 2239

 
Stanislav Korotky :

MSDN도 읽었습니다. 설명하십시오. Microsoft가 영어를 모르거나 자체 설명서를 읽지 않거나, 또는 - 마지막 옵션인 MQL의 플래그는 WinApi와 유사하게 이름이 지정되지만 다르게 작동합니까?

여기에서 가져옴 - https://docs.microsoft.com/en-us/windows/desktop/api/FileAPI/nf-fileapi-createfilea

FILE_SHARE_READ - 파일 또는 장치에 대한 후속 열기 작업을 활성화하여 읽기 액세스를 요청합니다. 그렇지 않으면 다른 프로세스가 읽기 액세스를 요청하는 경우 파일이나 장치를 열 수 없습니다.

FILE_SHARE_WRITE - 쓰기 액세스를 요청하기 위해 파일 또는 장치에 대한 후속 열기 작업을 활성화합니다. 그렇지 않으면 다른 프로세스가 쓰기 액세스를 요청하는 경우 파일이나 장치를 열 수 없습니다.

이를 바탕으로 두 번째 프로그램이 읽을 수 있도록 첫 번째 프로그램에서 FILE_SHARE_READ 플래그를 지정하면 충분합니다. FILE_SHARE_WRITE는 두 번째 프로그램이 첫 번째 프로그램에 추가하여 파일에 쓰는 것으로 알려진 경우에만 필요합니다.

행동의 차이에 대한 예를 들어주시겠습니까?


제공된 링크에 따르면 플래그에 대한 설명은 동일한 파일을 여러 번 열려고 할 때 플래그를 올바르게 사용하는 방법에 대한 아이디어를 제공하지 않습니다.

설명의 데이터를 기반으로 아래 예에서 네 번째(hread_1) 및 다섯 번째(hread_2) 호출이 유효합니까?라는 질문에 답해 보십시오.

   HANDLE hwrite     =::CreateFile(L "test.txt" , GENERIC_WRITE, FILE_SHARE_READ ,                   nullptr,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,nullptr);

   HANDLE hread_fail =::CreateFile(L "test.txt" , GENERIC_READ, FILE_SHARE_READ ,                   nullptr,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,nullptr);
   HANDLE hread_ok   =::CreateFile(L "test.txt" , GENERIC_READ, FILE_SHARE_WRITE ,                  nullptr,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,nullptr);

   HANDLE hread_1    =::CreateFile(L "test.txt" , GENERIC_READ, FILE_SHARE_WRITE ,                  nullptr,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,nullptr);
   HANDLE hread_2    =::CreateFile(L "test.txt" , GENERIC_READ, FILE_SHARE_WRITE | FILE_SHARE_READ ,  nullptr,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,nullptr);

답을 바로 알려드리겠습니다. 이 전화는 무효가 됩니다.

 
Stanislav Korotky :

MSDN도 읽었습니다. 설명하십시오. Microsoft가 영어를 모르거나 자체 설명서를 읽지 않거나, 또는 - 마지막 옵션인 MQL의 플래그는 WinApi와 유사하게 이름이 지정되지만 다르게 작동합니까?

여기에서 가져옴 - https://docs.microsoft.com/en-us/windows/desktop/api/FileAPI/nf-fileapi-createfilea

FILE_SHARE_READ - 파일 또는 장치에 대한 후속 열기 작업을 활성화하여 읽기 액세스를 요청합니다. 그렇지 않으면 다른 프로세스가 읽기 액세스를 요청하는 경우 파일이나 장치를 열 수 없습니다.

FILE_SHARE_WRITE - 쓰기 액세스를 요청하기 위해 파일 또는 장치에 대한 후속 열기 작업을 활성화합니다. 그렇지 않으면 다른 프로세스가 쓰기 액세스를 요청하는 경우 파일이나 장치를 열 수 없습니다.

이를 바탕으로 두 번째 프로그램이 읽을 수 있도록 첫 번째 프로그램에서 FILE_SHARE_READ 플래그를 지정하면 충분합니다. FILE_SHARE_WRITE는 두 번째 프로그램이 첫 번째 프로그램에 추가하여 파일에 쓰는 것으로 알려진 경우에만 필요합니다.

이러한 플래그를 혼동하지 않으려면 파일을 열면 이러한 플래그가 자신이 아닌 다른 프로세스에 대해 읽고/쓰는 것을 허용한다는 사실을 확실히 이해하는 것으로 충분합니다.

 
Alexey Viktorov :

이러한 플래그를 혼동하지 않으려면 파일을 열면 이러한 플래그가 자신이 아닌 다른 프로세스에 대해 읽고/쓰는 것을 허용한다는 사실을 확실히 이해하는 것으로 충분합니다.

그것이 바로 내가 말하는 것입니다. 그것이 제가 MS 문서를 이해하는 방법입니다(특히 쓰기 위해 파일을 여는 사람은 다른 사람들이 함께 읽을 수 있도록 허용할 수 있음). 그리고 솔루션에 권장되는 플래그를 사용하는 방법은 그 반대를 제안합니다. 공유 쓰기 플래그를 사용하는 두 번째 프로세스는 기록 중인 파일을 읽을 수 있습니다(즉, 첫 번째 프로세스를 우회하여 권한이 상승하더라도 첫 번째 프로세스는 작성할 때 공유 권한을 지정하지 않았지만). 부자연스럽게 들리기까지 합니다. 글쎄요, 해석을 읽으러 가겠습니다.

 
Stanislav Korotky :

그것이 바로 제가 말하는 것입니다. 그것이 제가 MS 문서를 이해하는 방법입니다(특히 쓰기 위해 파일을 여는 사람은 다른 사람들이 함께 읽을 수 있도록 허용할 수 있음).

읽기뿐만 아니라 쓰기도 허용합니다. 그리고 공동녹음이 전제된다면 각각 공동녹음이 허용되어야 한다.

스타니슬라프 코로트키 :

그리고 솔루션에 권장되는 플래그를 사용하는 방법은 그 반대를 제안합니다. 공유 쓰기 플래그를 사용하는 두 번째 프로세스 는 작성 중인 파일을 읽을 수 있습니다 (즉, 첫 번째 프로세스 를 우회하는 것처럼 권한이 상승 하더라도 첫 번째 프로세스는 작성할 때 공유 권한을 지정하지 않았지만). 부자연스럽게 들리기까지 합니다. 글쎄요, 해석을 읽으러 가겠습니다.

그리고 이것은 잘못된 것입니다. 그는 자신에게 어떤 것도 허용하지 않으며 자신을 위해 어떤 권리도 제기하지 않습니다. FILE_SHARE_READ 및 FILE_SHARE_WRITE 플래그 는 열린 파일의 속성을 참조합니다. 속성이 파일이 이미 점유된 프로세스의 권한을 포함하지 않는 경우 이 파일은 해제될 때까지 사용되지 않습니다.

따라서 이러한 예에서 첫 번째 파일은 쓰기 위해 파일을 열고 다른 프로세스가 읽을 수 있도록 허용했으며 두 번째 파일은 열렸을 때 이미 이 파일을 사용하고 있는 사람에게 쓰기를 금지(허용하지 않음)하려고 합니다. 여기서 난리가 난다고...누가 먼저 일어나서 슬리퍼를 신고...

 
Alexey Kozitsyn :

개발자에게 질문합니다.

동기화 기능이 있습니다:

그것으로 때로는 다음 오류가 발생합니다.

저것들. 표시기는 USDJPY에서 실행되고 EURGBP 기호에서 오류가 발생합니다. 동시에 터미널에 열려 있는 EURGBP 차트 가 있습니다.

오류 4014는 다음과 같이 말합니다.

시스템 기능을 호출할 수 없습니다.

어떻게 이럴 수있어?

그리고 다른 호출에 의해 생성되었습니다.

SymbolIsSynchronized를 호출하기 전에 ResetLastError()를 사용하십시오.

 
Slava :

그리고 다른 호출에 의해 생성되었습니다.

SymbolIsSynchronized를 호출하기 전에 ResetLastError()를 사용하십시오.

예, 이미 했습니다... 함수에 대한 문서에 오류가 발생한 경우 GetLastError() 를 호출 해야 한다고 명시적으로 명시되어 있지 않으면 함수가 오류 코드를 재설정하지 않는다는 의미인 것으로 나타났습니다. 권리?

 
Slava :

또한 원칙적으로 이러한 오류가 표시기에 나타날 수 있는 기능이 무엇인지 알고 싶습니다.

 
A100 :
제 경우에는 현재 ServiceDesk에서 재생이 안된다고 작성중입니다...따라서 홀의 도움이 필요합니다...조금 후에 자세하게 무엇을, 어떻게 쓰도록 할게요

따라서 요청 #1530548 에 따르면 ServiceDesk는 https://www.mql5.com/ru/forum/1111/page1628#comment_2702870 오류를 재현할 수 없습니다. 조금 생각한 후에 그 이유를 깨달았습니다! 답은 컴퓨터(태블릿)가 느리기 때문입니다.

비슷한 상황이 이 문제에 대한 요청 #1952509에 있었습니다. https://www.mql5.com/en/forum/1111/page2124#comment_6518537

ServiceDesk는 또한 처음으로 오류를 재현할 수 없다고 보고했습니다. 오류가 여전히 존재한다는 것을 확신시키는 데 많은 노력이 들었습니다... 결국:

지원팀 2018.02.10 22:35
금요일에 39개의 차트가 있는 약한 시스템에서 문제를 재현한 것 같습니다.
지켜볼 것이다. 필요한 경우 추가 정보를 요청할 것입니다. 고맙습니다.

이와 관련하여 다음과 같은 질문이 제기됩니다. 그러한 오류를 전혀 신경쓰지 않아도 됩니까? 아니면 조용히 살게 놔두세요... 다시는 안나오겠죠? 결국 빠른 컴퓨터로 옮기면 끝?!

이러한 질문은 여러 개의 Expert Advisors/Indicator가 있는 12개의 다른 차트가 빠른 컴퓨터를 느린 컴퓨터로 전환할 수 있다는 사실과 관련하여 발생합니다(그리고 일반 트레이더는 Expert Advisors 를 많이 사용합니다. 여기에 예제가 있습니다. https://www.mql5.com/en/forum/267154/page5 #comment_8164924 - 82개 EA 시작)... 또는 다른 상황(바이러스 백신... 다른 프로그램... 또는 시스템 자체가 일시적으로 거의 모든 리소스를 점유했습니다).

그러면 정확히 100분의 1이라는 설명할 수 없는 실패가 올 것입니다(글쎄, 자연의 법칙에 따르면 가장 부적절한 시간에 자연스럽게 발생합니다)

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2016.08.03
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 
A100 :

따라서 요청 #1530548 에 따르면 ServiceDesk는 https://www.mql5.com/ru/forum/1111/page1628#comment_2702870 오류를 재현할 수 없습니다. 조금 생각한 후에 그 이유를 깨달았습니다! 답은 컴퓨터(태블릿)가 느리기 때문입니다.

비슷한 상황이 이 문제에 대한 요청 #1952509에 있었습니다. https://www.mql5.com/en/forum/1111/page2124#comment_6518537

ServiceDesk는 또한 처음으로 오류를 재현할 수 없다고 보고했습니다. 오류가 여전히 존재한다는 것을 확신시키는 데 많은 노력이 들었습니다... 결국:

지원팀 2018.02.10 22:35
금요일에 39개의 차트가 있는 약한 시스템에서 문제를 재현한 것 같습니다.
지켜볼 것이다. 필요한 경우 추가 정보를 요청할 것입니다. 고맙습니다.

이와 관련하여 다음과 같은 질문이 제기됩니다. 그러한 오류를 전혀 신경쓰지 않아도 됩니까? 아니면 조용히 살게 놔두세요... 다시는 안나오겠죠? 결국 빠른 컴퓨터로 옮기면 끝?!

이러한 질문은 여러 개의 Expert Advisors/Indicator가 있는 12개의 다른 차트가 빠른 컴퓨터를 느린 컴퓨터로 전환할 수 있다는 사실과 관련하여 발생합니다(그리고 일반 트레이더는 Expert Advisors 를 많이 사용합니다. 여기에 예제가 있습니다. https://www.mql5.com/en/forum/267154/page5 #comment_8164924 - 82개 EA 시작)... 또는 다른 상황(바이러스 백신... 다른 프로그램... 또는 시스템 자체가 일시적으로 거의 모든 리소스를 점유했습니다).

그러면 정확히 100분의 1이라는 설명할 수 없는 실패가 올 것입니다(글쎄, 자연의 법칙에 따르면 가장 부적절한 시간에 자연스럽게 발생합니다)


나는 약한 컴퓨터를 가지고 있지 않다. 그러나 파일을 열 때 이러한 오류도 주기적으로 발생합니다.

 
Vladislav Andruschenko :
나는 약한 컴퓨터를 가지고 있지 않다. 그러나 파일을 열 때 이러한 오류도 주기적으로 발생합니다.
게다가 당신은 평범한 사용자가 아니지만 많은 사람들이 당신의 작업을 사용합니다.