WindowScreenShot 문제

 

여보세요,

Costum 표시기에서 WindowScreenShot이 완벽하게 작동합니다.

5분에 사진 만들기 예: 10:15,10:20 등...

그리고

일정 시간(임의)이 지나면 작동 하지 않습니다. 파일을 쓰지 않습니다.

왜요?

GetLastError()는 신호 오류가 아닙니다.

분명히 모든 것이 좋습니다.


고마워

 
ttechnik :

여보세요,

Costum 표시기에서 WindowScreenShot이 완벽하게 작동합니다.

5분에 사진 만들기 예: 10:15,10:20 등...

그리고

일정 시간(임의)이 지나면 작동 하지 않습니다. 파일을 쓰지 않습니다.

왜요?

우리가 볼 수 없는 당신의 코드가 깨졌기 때문입니다. 귀하의 코드를 볼 수 없으므로 어디에서 손상되었는지 알려드릴 수 없습니다.
 
  ....
   WindowScreenShot (filename, X_pixels, Y_pixels); 
   int error=GetLastError();
   if (error!= 0 ) Alert ( TimeToStr ( TimeCurrent (), TIME_SECONDS ), " trade_mode:" , trade_mode, " T_ScreenShot FileWrite0 error: (" , Symbol (), "  " ,error, "): " ,ErrorDescription(error));
  
   int handle = FileOpen (filename, FILE_BIN | FILE_READ ); 
   if (handle>- 1 )
    {
     error=GetLastError();
     if (error!= 0 ) Alert ( TimeToStr ( TimeCurrent (), TIME_SECONDS ), " trade_mode:" , trade_mode, " T_ScreenShot FileWrite1 error: (" , Symbol (), "  " ,error, "): " ,ErrorDescription(error));
     FileClose (handle);
    }
  
   int lasterror=GetLastError();
   if (lasterror!= 0 ) Alert ( TimeToStr ( TimeCurrent (), TIME_SECONDS ), " trade_mode:" , trade_mode, " T_ScreenShot, Schoted file open error: (" , Symbol (), "  " ,lasterror, "): " ,ErrorDescription(lasterror));
  
RaptorUK :
우리가 볼 수 없는 당신의 코드가 깨졌기 때문입니다. 귀하의 코드를 볼 수 없으므로 어디에서 손상되었는지 알려드릴 수 없습니다.

오류=0

및 lasterror = 4103, 파일을 열지 않음

왜요?

 
ttechnik :

오류=0

및 lasterror = 4103, 파일을 열지 않음

왜요?

파일 이름 이 고유합니까 아니면 파일 이름을 재사용합니까?
 
RaptorUK :
파일 이름 이 고유합니까 아니면 파일 이름을 재사용합니까?


고유한
 
ttechnik :

고유한
어떻게 그들을 독특하게 만들 수 있습니까?
 
  1. 오류가 없는 한 GetLastError()를 호출하지 마십시오.
     WindowScreenShot (filename, X_pixels, Y_pixels); 
       int error=GetLastError();
       if (error!= 0 ) Alert ( TimeToStr ( TimeCurrent (), TIME_SECONDS
    함수 반환 값이란 무엇입니까? 어떻게 사용합니까? - MQL4 포럼
     if ( ! WindowScreenShot (filename, X_pixels, Y_pixels) ){
       int error=GetLastError();
       Alert ( TimeToStr ( TimeCurrent (), TIME_SECONDS ...
    }

  2.    int handle = FileOpen (filename, FILE_BIN | FILE_READ ); 
       if (handle>- 1 )
        {
         error=GetLastError();
    
    FileOpen 이 실패하면 == -1을 처리합니다. 오류가 없을 때 경고를 발행하고 있을 때 계속합니다.
 
RaptorUK :
어떻게 그들을 독특하게 만들 수 있습니까?



 string timestamp = TimeToStr ( TimeCurrent (), TIME_SECONDS );
filename = filename + "_" + timestamp +   ".gif" ;
 
ttechnik :


내가 볼 수 있는 가장 큰 문제는 오류 처리입니다. WHRoeder 가 이미 언급했듯이 오류가 발생할 때/발생할 경우 보고하는 작업을 제대로 수행하지 못하고 있습니다. 예를 들어 WindowsScreenShot()이 작동했는지 또는 작동하지 않았는지 확인조차 하지 않습니다. . . WHRoeder 가 제안한 변경 사항을 적용하고 다시 테스트하십시오. 파일 이름이 고유하지 않습니다. . . 현재 시간의 hh:mm:ss를 사용하므로 매일 전날의 파일을 덮어쓸 수 있습니다. 해당 시간에 파일이 열려 있으면 4103 오류가 발생할 수 있습니다.

대신에 . . .

 string timestamp = TimeToStr ( TimeCurrent (), TIME_DATE | TIME_SECONDS );
filename = filename + "_" + timestamp +   ".gif" ;

. . . 파일 이름에 날짜를 추가합니다.

 
RaptorUK :

내가 볼 수 있는 가장 큰 문제는 오류 처리입니다. WHRoeder 가 이미 언급했듯이 오류가 발생할 때/발생할 경우 보고하는 작업을 제대로 수행하지 못하고 있습니다. 예를 들어 WindowsScreenShot()이 작동했는지 또는 작동하지 않았는지 확인조차 하지 않습니다. . . WHRoeder 가 제안한 변경 사항을 적용하고 다시 테스트하십시오. 파일 이름이 고유하지 않습니다. . . 현재 시간의 hh:mm:ss를 사용하므로 매일 전날의 파일을 덮어쓸 수 있습니다. 해당 시간에 파일이 열려 있으면 4103 오류가 발생할 수 있습니다.

대신에 . . .

. . . 파일 이름에 날짜를 추가합니다.

마지막 오류는 4103입니다. 계속

오류는 0입니다

..... 그리고 MT4를 종료하고 다시 실행, 올바르게 실행

일정 시간(임의)이 지나면 작동 하지 않습니다. 파일을 쓰지 않습니다. 그러나 파일, 파일 이름은 고유합니다.

왜요?


 string timestamp = TimeToStr ( TimeCurrent (), TIME_DATE )+ "_" + TimeToStr ( TimeCurrent (), TIME_SECONDS );
   for ( int i= StringLen (timestamp); i> 0 ; i--)
     if ( StringFind (timestamp, ":" ,i)!=- 1 || StringFind (timestamp, "." ,i)!=- 1 ) timestamp= StringSetChar (timestamp, i, '-' );
          

string filename = mappa + CharToStr ( 92 ) + CharToStr ( 92 ) + Symbol ();
filename = filename + "_" + timestamp +   ".gif" ;

int error;
if (! WindowScreenShot (filename, X_pixels, Y_pixels))
   { 
    error=GetLastError();
     if (error!= 0 ) Alert ( TimeToStr ( TimeCurrent (), TIME_SECONDS ), " trade_mode:" , trade_mode, " T_ScreenShot FileWrite0 error: (" , Symbol (), "  " ,error, "): " ,ErrorDescription(error));
   }
Alert(filename);  
int handle = FileOpen (filename, FILE_BIN | FILE_READ ); 
if (handle>- 1 )
    {
     error=GetLastError();
     if (error!= 0 ) Alert ( TimeToStr ( TimeCurrent (), TIME_SECONDS ), " trade_mode:" , trade_mode, " T_ScreenShot FileWrite1 error: (" , Symbol (), "  " ,error, "): " ,ErrorDescription(error));
     FileClose (handle);
    }
else
   {  
     int lasterror=GetLastError();
     if (lasterror!= 0 ) Alert ( TimeToStr ( TimeCurrent (), TIME_SECONDS ), " trade_mode:" , trade_mode, " T_ScreenShot, Schoted file open error: (" , Symbol (), "  " ,lasterror, "): " ,ErrorDescription(lasterror));
   }
 
ttechnik :

마지막 오류는 4103입니다. 계속

오류는 0입니다

..... 그리고 MT4를 종료하고 다시 실행, 올바르게 실행

일정 시간(임의)이 지나면 작동 하지 않습니다. 파일을 쓰지 않습니다. 그러나 파일, 파일 이름은 고유합니다.

왜요?



로그 파일에서 오류를 보여주는 부분을 보여주세요. . .
사유: