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

 
Contender :

그래서:

문자열 var1[1][2] = {{"dfdffd","dfdfdfd"}};

?

감사합니다 .... 질문이 제거되었습니다.
 

안녕하세요 친애하는 커뮤니티입니다.

사이트에서 찾을 수 없었고 이 코드가 오류를 작성하는 이유를 반나절 동안 이해할 수 없었습니다. 괜찮으시다면 말씀해주세요.

 //+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping

//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
//---
   string nameObject= "testObject" ;
   ChartRedraw ( 0 );
   ResetLastError ();
   if ( ObjectFind ( 0 ,nameObject)>= 0 ){
      if (! ObjectDelete ( 0 ,nameObject)){
         if ( _LastError > 0 ){
            Print ( "1 Ошибка №" , _LastError );
            ResetLastError ();
         }
      }
   }
   ChartRedraw ( 0 );
   if ( _LastError > 0 ){
      Print ( "2 Ошибка №" , _LastError ); // Тут ошибка №4202 <Графический объект не найден>
      ResetLastError ();
   }
   if (! ObjectCreate ( 0 ,nameObject, OBJ_LABEL , 0 , 0 , 0 )){
      if ( _LastError > 0 ){
         Print ( "3 Ошибка №" , _LastError );
         ResetLastError ();
      }
   } else {
      ObjectSetInteger ( 0 ,nameObject, OBJPROP_CORNER , 1 );
   }
   if ( _LastError > 0 ){
      Print ( "4 Ошибка №" , _LastError );
      ResetLastError ();
   }
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
 
svds75 :

안녕하세요 친애하는 커뮤니티입니다.

사이트에서 찾을 수 없었고 이 코드가 오류를 작성하는 이유를 반나절 동안 이해할 수 없었습니다. 괜찮으시다면 말씀해주세요.

왜 객체를 삭제합니까?
 
sergeev :
왜 객체를 삭제합니까?
실제로 프로그램은 더 복잡합니다. 문제가 무엇인지 이해하기 위해 불명예스럽게 단순화했습니다. 그러나 나는 이해하지 못했다.
 
svds75 :
실제로 프로그램은 더 복잡합니다. 문제가 무엇인지 이해하기 위해 불명예스럽게 단순화했습니다. 그러나 나는 이해하지 못했다.
모든 틱 이 아닌 하나의 메시지만 있는 이유를 이해하려고 노력하면 질문이 없습니다.
 
svds75 :
실제로 프로그램은 더 복잡합니다. 문제가 무엇인지 이해하기 위해 불명예스럽게 단순화했습니다. 그러나 나는 이해하지 못했다.

코드 스타일로 판단하면 여전히 단순화할 수 있습니다. 댓글 좀

아마도 if/else에서 혼란스러워 했습니까?

 
svds75 :

안녕하세요 친애하는 커뮤니티입니다.

사이트에서 찾을 수 없었고 이 코드가 오류를 작성하는 이유를 반나절 동안 이해할 수 없었습니다. 괜찮으시다면 말씀해주세요.

디자인을 사용하면 코드 를 더 잘 읽을 수 있고 오류를 즉시 볼 수 있습니다.

 //---
   string nameObject= "testObject" ;
   ChartRedraw ( 0 );
   ResetLastError ();
   if ( ObjectFind ( 0 ,nameObject)>= 0 )     // конечно объект не найден
     {
       if (! ObjectDelete ( 0 ,nameObject))
        {
         if ( _LastError > 0 )
           {
             Print ( "1 Ошибка №" , _LastError );
             ResetLastError ();
           }
        }
     }
   ChartRedraw ( 0 );
   if ( _LastError > 0 )
     {                                 // поэтому сразу переходим сюда:
       Print ( "2 Ошибка №" , _LastError );   // Тут ошибка №4202 <Графический объект не найден>
       ResetLastError ();
     }
 
mql5 :
모든 틱이 아닌 하나의 메시지만 있는 이유를 이해하려고 노력하면 질문이 없습니다.
죄송합니다. 받지 못했습니다. 아마도 당신은 답을 알고 나에게 힌트를 주었을 것입니다. 나는 또한 이것에 대해 생각했기 때문에 그들이 어떤 함수, ObjectFind() 또는 ObjectDelete() 가 _LastError에 오류를 기록하는지 또는 다른 것에 오류를 기록하는지 말하면 아마도 그것이 나를 깨우쳤을 것입니다.
세르게예프 :

코드 스타일로 판단하면 여전히 단순화할 수 있습니다. 댓글 좀

아마도 if/else에서 혼란스러워 했습니까?

적용 장소는 말할 것도 없고(이 코드에서도) 많은 옵션을 시도했습니다. 그리고 if / else 아래의 경우 삭제해도 될 것 같고 오류가 남습니다.

대부분 우회할 수 있습니다. 상당한 양의 작업 후에 작성할 개체 유효성 검사 코드가 더 많습니다. 저에게는 실행 과정에서 매개변수가 여러 번 변경되기 때문에 삭제하고 필요한 매개변수로 다시 만드는 것이 더 쉽습니다. 알게되어 이렇게 질문드립니다.

 
barabashkakvn :

디자인을 사용하면 코드 를 더 잘 읽을 수 있고 오류를 즉시 볼 수 있습니다.

그리고 실수는 무엇입니까? 사실 물체가 없다는 걸 알면서도 존재를 확인할 수 없는 건가요?

그리고 디자인에 관해서는 "맛과 색상에 ..."

 
svds75 :

그리고 실수는 무엇입니까? 사실 존재하지 않는 것을 알면서도 존재를 확인할 수 없는 것인가?

그리고 디자인에 관해서는 "맛과 색상에 ..."

개체찾기

반환 값

성공하면 함수는 찾은 개체가 있는 하위 창(0은 차트의 기본 창을 의미함)의 번호를 반환합니다 . 객체를 찾을 수 없으면 함수는 음수를 반환합니다. 오류 에 대한 자세한 정보를 얻으 려면 GetLastError() 함수를 호출 해야 합니다.

개체를 찾을 수 없으면 오류입니다. 이 경우 ObjectFind 함수 자체는 음수를 반환하고 오류 번호를 얻을 수 있습니다.

이것은 더 명확합니다.

 //---
   string nameObject= "testObject" ;
   ChartRedraw ( 0 );
   ResetLastError ();
   int find= ObjectFind ( 0 ,nameObject);
   if (find>= 0 )     // конечно объект не найден
     {
       if (! ObjectDelete ( 0 ,nameObject))

디버그에서 실행하고 " 찾기 " 변수의 값을 확인하십시오.