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

 
Artyom Trishkin :

기능에 표시되어야 하지 않을까요?

정리하도록 노력하겠습니다.

 
이 주제와 관련이 없는 댓글은 " MQL4 MT4 MetaTrader 4 초보자의 질문 "으로 이동되었습니다.
 

친애하는 웹사이트 디자이너 여러분,

여기 메시지의 스크린샷이 있습니다. 현재 선택된 대담자를 알려주십시오.


이미 당신의 눈은 당신이 누구에게 쓰는지 이해하기 위해 이마에 있습니다 ....

당신이 대답하지 않은 사람, 당신이 대답 한 사람, 그리고 당신이 지금 쓰고있는 사람의 별도의 색으로 표시하십시오 ...

 
Vladimir Pastushak :

친애하는 웹사이트 디자이너 여러분,

여기 메시지의 스크린샷이 있습니다. 현재 선택된 대담자를 알려주십시오.


이미 당신의 눈은 당신이 누구에게 쓰는지 이해하기 위해 이마에 있습니다 ....

당신이 대답하지 않은 사람, 당신이 대답 한 사람, 그리고 당신이 지금 쓰고있는 사람의 별도의 색으로 표시하십시오 ...

2

동의하지만. 당신은 항상 그것을 알아차리지 못하고, 약간의 대조가 있습니다.

 
Vladimir Pastushak :

여기 메시지의 스크린샷이 있습니다. 현재 선택된 대화 상대를 알려주십시오.

크롬에서 ( 71.0.3578.98 ) FF (64) 에서 확인이 전혀 보이지 않습니다
 
일반적으로 사이트 전체에 대비를 추가하는 것이 좋습니다.
 

MQL에서 *CObject 포인터를 역참조하는 것이 가능한 경우?

다른 옵션을 시도했습니다. 여기에 테스트용 스크립트가 있습니다. 연결 목록에 3개의 Myclass 요소를 추가한 다음 CMyclass 필드의 값을 변경합니다. 작동 방식은 다음과 같습니다.

#include <Object.mqh>
#include <Arrays\List.mqh>
//+------------------------------------------------------------------+
class CMyclass: public CObject
  {
public :
   int                x;
   double             y;
   void               CMyclass( void ):x(- 1 ),y(- 2.2 ) { }
  };
//+------------------------------------------------------------------+
void OnStart()
  {
   CList * base = new CList;
   CMyclass *result;
   for ( int i= 0 ;i< 3 ;i++)
     {
       base .Add( new CMyclass);
      result= base .GetCurrentNode();
      result.x = 99 ;
      result.y = - 555.5 ;
     }
   for ( int i= 0 ;i< 3 ;i++)
     {
      result= base .GetNodeAtIndex(i);
      Print(result.x, " : " ,result.y);
     }
   delete base ;
  }
//+------------------------------------------------------------------+

중간 CMyclass *result 포인터 없이 동적으로 생성된 CMyclass 요소의 여백을 변경할 수 있습니까?

( CMyclass *)(base.GetCurrentNode()).x = 99;

추신: 나는 typedef 를 사용해야 한다고 생각하지만 지금까지는 운이 없었습니다.

 
Igor Makanu :

MQL에서 *CObject 포인터를 역참조하는 것이 가능한 경우?

다른 옵션을 시도했습니다. 여기에 테스트용 스크립트가 있습니다. 연결 목록에 3개의 Myclass 요소를 추가한 다음 CMyclass 필드의 값을 변경합니다. 작동 방식은 다음과 같습니다.

중간 CMyclass *result 포인터 없이 동적으로 생성된 CMyclass 요소의 여백을 변경할 수 있습니까?

( CMyclass *)(base.GetCurrentNode()).x = 99;

추신: typedef를 사용해야 한다고 생각하지만 아직까지는 운이 없습니다.

나는 라이브러리 CList 가 거기에서 무엇을 하는지 모르지만 나는 이것을 하곤 했습니다.

 #define alive(node)  ( CheckPointer (node)== POINTER_DYNAMIC )
#define loopf(type, node)   for (type *o=alive(node)?node.First(): NULL ; alive(o); o=alive(o)?(alive(o.Next())?o.Next(): NULL ): NULL )
//.....
      loopf(COrder, corr){
         if (( fabs (o.StopLoss()-sl)>=_point(o. Symbol ())) || ( fabs (o.TakeProfit()-tp)>=_point(o. Symbol ()))){
            o.SLTP(sl, tp);
         }
      }
//.....
 
Ilya Malev :

나는 라이브러리 CList가 거기에서 무엇을 하는지 모르지만 나는 이것을 하곤 했습니다.

ATP, 하지만 그것은 내가 찾고 있는 것이 아닙니다. 귀하의 예는 본질적으로 함수 호출을 통한 유형 변환입니다.

추신: 저는 MQL에서 포인터로 작업하는 데 익숙하지 않아서 알아내려고 노력 중입니다. 예제가 간단하고 작동하는 것처럼 보이지만 지금까지 GetCurrentNode() 결과를 가져오는 방법을 찾지 못했습니다. --> CObject * to my CMyclass type .... 옵션으로 CMyclass 생성자를 통해 확실히 똑똑해질 수 있지만 MQL에서 유형 캐스팅 을 통한 우아한 솔루션이 있기를 바랍니다.

 
Igor Makanu :

ATP, 하지만 그것은 내가 찾고 있는 것이 아닙니다. 귀하의 예는 본질적으로 함수 호출을 통한 유형 변환입니다.

추신: 저는 MQL에서 포인터로 작업하는 데 익숙하지 않아서 알아내려고 노력 중입니다. 예제가 간단하고 작동하는 것처럼 보이지만 지금까지 GetCurrentNode() 결과를 가져오는 방법을 찾지 못했습니다. --> CObject * to my CMyclass type .... 옵션으로 CMyclass 생성자를 통해 확실히 똑똑해질 수 있지만 MQL에서 유형 캐스팅 을 통한 우아한 솔루션이 있기를 바랍니다.

나는 거기에 기능이 없지만 정확히 당신이 설명한 작업이 해결되고 있습니다. 목록의 기본 클래스는 CNode(메서드가 Prev(), Next() 등임)이고 주기에서 후속 항목인 COrder의 필드에 대한 호출이 있습니다. 주기는 정의 1회에 선언된 다음 모든 곳에서 사용됩니다.