Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1323

 
¿es posible imprimir EMPTY_VALUE como "EMPTY_VALUE" en lugar del valor 1797......?
 
Fast235:
¿es posible imprimir EMPTY_VALUE como "EMPTY_VALUE" en lugar de 1797......?

más información... código

"EMPTY_VALUE" no puede ser 1797......

 
MakarFX:
más...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:
¿Qué necesita exactamente para la impresión?
 
MakarFX:
¿Qué necesita exactamente para la impresión?

Gracias,

sólo puede haberEMPTY_VALUE en un lugar))

 
Fast235:

Gracias,

sólo puede haberEMPTY_VALUE en un lugar))

No soy un experto como tú, pero...

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

Me gustaría poder utilizar una grabación en lugar de

test.SetValue1(1,0.5);

sería posible utilizar una entrada

test.Value1(1)=0.5;

Sospecho que, de ser posible, sería con sobrecarga. Pero me faltan conocimientos e imaginación.

Si esto es posible, por favor, indíquenos cómo ponerlo en práctica.

 
Yurij Kozhevnikov:

Me gustaría poder utilizar una grabación en lugar de

sería posible utilizar una entrada

Sospecho que, de ser posible, sería con sobrecarga. Pero me faltan los conocimientos y la imaginación.

Si es posible, por favor, indíquenos cómo ponerlo en práctica.

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

Gracias, esa implementación se me ha ocurrido, pero no es del todo lo mismo debido a la ausencia del propio Value1. Es decir, el ejemplo que he creado es, por supuesto, extremadamente simplificado, pero se da a entender que éste no es el valor principal de la clase, que puede haber un número de tales valores y que para cada uno de ellos se puede describir una construcción.

O para tal implementación, ¿es posible describir sólo una clase o estructura separada en la que implementar la sobrecarga, y en esta clase describir las variables del tipo creado? Pero, si en la operación de asignación intervienen otras variables de la clase, de nuevo no cuadra.

En realidad, quería implementar algo similar a los métodos Let/Set/Get en 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:
¿es posible imprimir EMPTY_VALUE como "EMPTY_VALUE" en lugar de 1797......?

simplemente sobrecarga DoubleToString, si devuelve la cadena "EMPTY_VALUE" si no, llama a ::DoubleToString

Razón de la queja: