mql4에서 스택 오버플로 오류의 원인은 무엇입니까?

 

컴파일하는 동안 mql4에서 스택 오버플로 오류가 발생하는 원인은 무엇입니까? 함수를 사용하여 개체를 만드는 것이 의심됩니다. 다음은 객체를 생성하기 위해 100번 이상 호출된 함수입니다.

 int ObCreate( string ObName, double Xdist, double Ydist, double Zoom)
 {
 
   ObjectCreate (ObName, OBJ_LABEL , 0 , 0 , 0 );   // Creating obj.
   ObjectSet(ObName, OBJPROP_CORNER , 0 );     // Reference corner
   ObjectSet(ObName, OBJPROP_XDISTANCE , Xdist*ZoomTimes); // X coordinate   
   ObjectSet(ObName, OBJPROP_YDISTANCE , ZoomTimes*Ydist); // Y coordinate
 return ( 0 );
 }

아래는 하나의 사용 예입니다

   ObCreate( "EURUSD" ,Column1x, 15 ,ZoomTimes);

이 오류가 발생하지 않고 정상적인 방법으로 다른 동일한 수의 개체를 생성했지만 이 기능을 도입하여 나머지 개체를 생성할 때 오류가 발생한 경우입니다. 개체 수에 비해 노동 집약적이지만 오류가 발생하지 않는 아래 샘플을 참조하십시오.

   ObjectCreate ( "EURUSD" , OBJ_LABEL , 0 , 0 , 0 );   // Creating obj.
   ObjectSet( "EURUSD" , OBJPROP_CORNER , 0 );     // Reference corner
   ObjectSet( "EURUSD" , OBJPROP_XDISTANCE , Column1x*ZoomTimes); // X coordinate   
   ObjectSet( "EURUSD" , OBJPROP_YDISTANCE , ZoomTimes* 15 ); // Y coordinate
 
tonny :

mql4에서 스택 오버플로 오류의 원인은 무엇입니까? 함수를 사용하여 개체를 만드는 것이 의심됩니다. 다음은 객체를 생성하기 위해 100번 이상 호출된 함수입니다.

아래는 하나의 사용 예입니다

이 오류가 발생하지 않고 정상적인 방법으로 다른 동일한 수의 개체를 생성했지만 이 기능을 도입하여 나머지 개체를 생성할 때 오류가 발생한 경우입니다. 개체 수에 비해 노동 집약적이지만 오류가 발생하지 않는 아래 샘플을 참조하십시오.

나는 스택 오버플로가 발생한 적이 없습니다. 내가 읽은 것에서 그들은 종종 재귀로 인해 발생하지만 게시한 코드에서는 그것을 볼 수 없습니다. . . 함수 유형이 int인 이유는 무엇입니까? 당신이 그것을 사용하지 않을 때 변수 이중 확대를 전달하는 요점이 무엇입니까?

한 가지 더, OBJPROP_XDISTANCE 및 OBJPROP_YDISTANCE 의 값은 intdouble 이 아닌 것으로 가정됩니다.
 
RaptorUK :
나는 스택 오버플로가 발생한 적이 없습니다. 내가 읽은 것에서 그들은 종종 재귀로 인해 발생하지만 게시한 코드에서는 그것을 볼 수 없습니다 . . . 함수 유형이 int인 이유는 무엇입니까? 당신이 그것을 사용하지 않을 때 변수 이중 확대를 전달하는 요점이 무엇입니까?

한 가지 더, OBJPROP_XDISTANCE 및 OBJPROP_YDISTANCE 의 값은 intdouble 이 아닌 것으로 가정됩니다.


그것이 나를 어리둥절하게 하는 것입니다.

랩터영국 :
나는 스택 오버플로가 발생한 적이 없습니다. 내가 읽은 것에서 그들은 종종 재귀로 인해 발생하지만 게시한 코드에서는 그것을 볼 수 없습니다. . . 함수 유형이 int인 이유는 무엇입니까? 당신이 그것을 사용하지 않을 때 변수 이중 확대를 전달하는 요점이 무엇 입니까?

한 가지 더, OBJPROP_XDISTANCE 및 OBJPROP_YDISTANCE 의 값은 intdouble 이 아닌 것으로 가정됩니다.

나는 약간의 찾기 및 교체를 수행했고 아직 표시기의 아래쪽 부분을 수정하지 않았습니다.

랩터영국 :
나는 스택 오버플로가 발생한 적이 없습니다. 내가 읽은 것에서 그들은 종종 재귀로 인해 발생하지만 게시한 코드에서는 그것을 볼 수 없습니다. . . 함수 유형이 int인 이유는 무엇입니까? 당신이 그것을 사용하지 않을 때 변수 이중 확대를 전달하는 요점이 무엇입니까?

한 가지 더, OBJPROP_XDISTANCE 및 OBJPROP_YDISTANCE 의 값은 intdouble 이 아닌 것으로 가정됩니다.

남자는 ObjectSet() 에 대한 더 많은 책을 읽으십시오. 내가 도와줄게 기다려. 아래는 발췌한 내용입니다.

 bool ObjectSet( string name, int index, double value )
 
tonny :


남자는 ObjectSet() 에 대한 더 많은 책을 읽으십시오. 내가 도와줄게 기다려. 아래는 발췌한 내용입니다.

나는 당신의 인용문을 보고 이것으로 당신을 키울 것입니다. . .

OBJPROP_XDISTANCE 102 정수 앵커 X 거리 개체 속성을 픽셀 단위로 설정/가져오기 위한 정수 값 입니다.
OBJPROP_YDISTANCE 103 정수 정수 값 은 앵커 Y 거리 객체 속성을 픽셀 단위로 설정/가져오기 위한 것입니다.

이중으로 사용하시겠습니까?

OBJPROP_BACK 9 부울 개체에 대한 배경 그리기 플래그를 설정/가져오기 위한 부울 값입니다.
OBJPROP_RAY 10 부울 개체의 광선 플래그를 설정/가져오기 위한 부울 값입니다.
OBJPROP_ELLIPSE 11 부울 fibo arc에 대한 타원 플래그를 설정/가져오기 위한 부울 값입니다.


 
토니: 나는 당신이 기대했던 것에 정말로 길을 잃었습니다. 컴파일하는 동안 " 스택 오버플로" 오류도 발생하지 않았습니다. 문제를 재현하는 방법에 대한 정확한 지침을 알려주시겠습니까?
 
Ovo :
토니: 나는 당신이 기대했던 것에 정말로 길을 잃었습니다. 컴파일하는 동안 "스택 오버플로" 오류도 발생하지 않았습니다. 문제를 재현하는 방법에 대한 정확한 지침을 알려주시겠습니까?
어떻게 재현하려고 했습니까? 위의 코드는 100번 이상 함수 를 호출했다고 분명히 말한 코드의 일부이므로 재현하고 싶다면 함수의 108개 호출을 시뮬레이션할 수 있습니다.
 
RaptorUK :

나는 당신의 인용문을 보고 이것으로 당신을 키울 것입니다. . .

이중으로 사용하시겠습니까?

내가 하는 일에는 아무런 차이가 없습니다. 여기에 게시된 작은 것보다 더 많은 것이 있습니다.
 
tonny :
내가 하는 일에는 아무런 차이가 없습니다. 여기에 게시된 작은 것보다 더 많은 것이 있습니다.
오류를 재현할 수 있도록 모든 코드를 게시하고 싶지 않다면 동일한 오류를 재현할 수 있는 전체를 게시할 수 있는 코드를 작성하십시오.
 
RaptorUK :
오류를 재현할 수 있도록 모든 코드를 게시하고 싶지 않다면 동일한 오류를 재현할 수 있는 전체를 게시할 수 있는 코드를 작성하십시오.

괜찮아.
 

나는 실험을 했고 이런 종류의 물건을 교체했습니다.

 ObjectCreate ( "EURUSD" , OBJ_LABEL , 0 , 0 , 0 );   // Creating obj.
   ObjectSet( "EURUSD" , OBJPROP_CORNER , 0 );     // Reference corner
   ObjectSet( "EURUSD" , OBJPROP_XDISTANCE , Column1x*ZoomTimes); // X coordinate   
   ObjectSet( "EURUSD" , OBJPROP_YDISTANCE , ZoomTimes* 15 ); // Y coordinate

그리고 아래와 같이 함수 스타일을 사용했더니 에러가 사라졌습니다. IDE는 아래보다 위의 작업을 더 적게 수행할 수 있습니다. 위의 스타일을 모두 아래 스타일로 바꾸고 다른 것이 나타나는지 확인하겠습니다.

ObCreate( "EURUSD" ,Column1x, 15 ,ZoomTimes);
 
나는 여기에 오류를 생성하는 스크립트와 그렇지 않은 중립화된 버전을 첨부했습니다. 누군가 다른 솔루션을 얻을 수도 있습니다. 이 큰 버그.