MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1323

 
EMPTY_VALUE를 1797 대신 " EMPTY_VALUE "로 인쇄할 수 있습니까......?
 
Fast235 :
EMPTY_VALUE를 1797 대신 " EMPTY_VALUE "로 인쇄할 수 있습니까......?

더...코드

"EMPTY_VALUE"는 1797이 될 수 없습니다......

 
MakarFX :
더...코드
 while ( CopyBuffer (handle,buffer_num,Start_bar,Count_bar,buffer) == Count_bar && ! _StopFlag )
        {
         //--- в цикле проверяем номера буфера
         for ( int ii= 0 ; ii<Count_bar; ++ii)
            result_output += "\n" +name
                            + "[" + IntegerToString (buffer_num)+ "]"
                            + "[" + IntegerToString (ii)+ "]"
                            + "=" + DoubleToString (buffer[ii], _Digits );
 
Fast235 :
정확히 무엇을 인쇄해야 합니까?
 
MakarFX :
정확히 무엇을 인쇄해야 합니까?

고맙습니다,

한 곳에 EMPTY_VALUE 만 있을 수 있음))

 
Fast235 :

고맙습니다,

한 곳에 EMPTY_VALUE 만 있을 수 있음))

나는 당신만큼 전문가는 아니지만...

 if ( result_output> 0 ) Print ( result_output );

else

Print ( " EMPTY_VALUE " ); 
 
class TestClass
{
   private :
     double cValue1;
   public :
     double Value1()
    { return cValue1;}

     void SetValue1( int param, double value )
    {
       if (param> 0 )cValue1= value ;
    }
};

void TestFunction()
{
  TestClass test;
  test.SetValue1( 1 , 0.5 );
}

대신 싶습니다.

test.SetValue1( 1 , 0.5 );

기록을 사용할 수 있다

test.Value1( 1 )= 0.5 ;

가능한 경우 과부하의 도움으로 의심됩니다. 그러나 지식과 상상력이 부족합니다.

가능하다면 구현 방법을 알려주세요.

 
Yurij Kozhevnikov :

대신 싶습니다.

기록을 사용할 수 있다

가능한 경우 과부하의 도움으로 의심됩니다. 그러나 지식과 상상력이 부족합니다.

가능하다면 구현 방법을 알려주세요.

 class TestClass
{
   private :
     double cValue1;
   public :
     double Value1()
    { return cValue1;}

     void SetValue1( int param, double value )
    {
       if (param> 0 )cValue1= value ;
    }
     void operator =( const double value ) { cValue1 = value ; }
};
//+------------------------------------------------------------------+
void OnStart()
{
   TestClass t;
   t = 123.456 ;
   Print( "Value1() = " , t.Value1());       // Value1() = 123.456
}
//+------------------------------------------------------------------+

https://www.mql5.com/ru/docs/basis/function/operationoverload

Документация по MQL5: Основы языка / Функции / Перегрузка операций
Документация по MQL5: Основы языка / Функции / Перегрузка операций
  • www.mql5.com
Перегрузка операций позволяет использовать операционную нотацию (запись в виде простых выражений) к сложным объектам - структурам и классам. Запись выражений с использованием перегруженных операций упрощает восприятие исходного кода, так как более сложная реализация сокрыта. Для примера рассмотрим широко применяемые в математике комплексные...
 

감사합니다. 그런 구현이 떠올랐지만 Value1 자체가 없기 때문에 이것은 옳지 않습니다. 즉, 내가 만든 예제는 물론 매우 단순화되었지만 이것이 클래스의 주요 값이 아니며 이러한 값이 일정 개수 있을 수 있으며 이러한 구성을 다음과 같이 설명할 수 있음을 이해합니다. 각.

또는 이러한 구현이 오버로드를 구현하고 이 클래스에서 생성된 유형의 변수를 설명하는 별도의 클래스 또는 구조만 설명하는 것이 가능합니까? 그러나 다른 클래스 변수가 할당 작업에 포함되면 다시 합산되지 않습니다.

사실, 나는 vbs의 Let/Set/Get 메소드 와 비슷한 것을 구현하고 싶었습니다.

"Property Let/Set/Get" Procedures
  • www.herongyang.com
This section provides a tutorial example on how to use 'Property Let/Set/Get' procedure to define public properties.  Properties defined through public variables are simple to use. But you can not use them to update internal variables or other properties when their values are changes. A better way to define public properties is to use...
 
Fast235 :
EMPTY_VALUE를 1797 대신 " EMPTY_VALUE "로 인쇄할 수 있습니까......?

DoubleToString을 오버로드하고 비어 있으면 "EMPTY_VALUE" 문자열을 반환하고, 그렇지 않으면 :: DoubleToString 을 호출합니다.