Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1323

 
é possível imprimir EMPTY_VALUE como "EMPTY_VALUE" em vez do valor 1797......?
 
Fast235:
é possível imprimir EMPTY_VALUE como "EMPTY_VALUE" em vez de 1797......?

mais informações... código

"EMPTY_VALUE" não pode ser 1797......

 
MakarFX:
mais... código
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:
O que você precisa exatamente para a impressão?
 
MakarFX:
O que você precisa exatamente para a impressão?

Obrigado,

só pode haverVAZIO_VALOR em um só lugar))

 
Fast235:

Obrigado,

só pode haverVAZIO_VALOR em um só lugar))

Eu não sou um especialista como você, mas...

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);
}

Eu gostaria de poder usar uma gravação em vez de

test.SetValue1(1,0.5);

seria possível utilizar uma entrada

test.Value1(1)=0.5;

Suspeito que, se possível, seria com uma sobrecarga. Mas me falta conhecimento e imaginação.

Se isso for possível, favor aconselhar como implementá-lo.

 
Yurij Kozhevnikov:

Eu gostaria de poder usar uma gravação em vez de

seria possível utilizar uma entrada

Suspeito que, se possível, seria com sobrecarga. Mas me falta o conhecimento e a imaginação.

Se for possível, por favor, informe como implementá-lo.

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
Перегрузка операций позволяет использовать операционную нотацию (запись в виде простых выражений) к сложным объектам - структурам и классам. Запись выражений с использованием перегруженных операций упрощает восприятие исходного кода, так как более сложная реализация сокрыта. Для примера рассмотрим широко применяемые в математике комплексные...
 

Obrigado, tal implementação me ocorreu, mas não é bem a mesma devido à ausência do próprio Valor1. Ou seja, o exemplo que eu criei é, naturalmente, extremamente simplificado, mas está implícito que este não é o valor principal da classe, que pode haver uma série de tais valores e que para cada uma dessas construções pode ser descrita.

Ou, para tal implementação, é possível descrever apenas uma classe ou estrutura separada na qual implementar a sobrecarga, e nesta classe descrever variáveis do tipo criado? Mas, se outras variáveis da classe estiverem envolvidas na operação de atribuição, então, novamente, ela não se soma.

Na verdade, eu queria implementar algo semelhante aos métodos Let/Set/Get em vbs.

"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:
é possível imprimir EMPTY_VALUE como "EMPTY_VALUE" em vez de 1797......?

simplesmente sobrecarregar DoubleToString, se devolver a string "EMPTY_VALUE ". caso contrário, chamar ::DoubleToString