Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1323

 
è possibile stampare EMPTY_VALUE come "EMPTY_VALUE" invece del valore 1797......?
 
Fast235:
è possibile stampare EMPTY_VALUE come "EMPTY_VALUE" invece di 1797......?

più informazioni... codice

"EMPTY_VALUE" non può essere 1797......

 
MakarFX:
più... codice
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:
Di cosa avete bisogno esattamente per la stampa?
 
MakarFX:
Di cosa avete bisogno esattamente per la stampa?

Grazie,

ci può essere soloEMPTY_VALUE in un posto))

 
Fast235:

Grazie,

ci può essere soloEMPTY_VALUE in un posto))

Non sono un esperto come te, ma...

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

Vorrei essere in grado di usare una registrazione invece di

test.SetValue1(1,0.5);

sarebbe possibile utilizzare una voce

test.Value1(1)=0.5;

Ho il sospetto che, se possibile, sarebbe con un sovraccarico. Ma mi mancano la conoscenza e l'immaginazione.

Se questo è possibile, per favore consigliate come implementarlo.

 
Yurij Kozhevnikov:

Vorrei essere in grado di usare una registrazione invece di

sarebbe possibile utilizzare una voce

Ho il sospetto che, se possibile, sarebbe con il sovraccarico. Ma mi mancano la conoscenza e l'immaginazione.

Se è possibile, per favore consigliate come implementarlo.

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

Grazie, tale implementazione mi è venuta in mente, ma non è proprio la stessa a causa dell'assenza di Value1 stesso. Cioè, l'esempio che ho creato è ovviamente estremamente semplificato, ma è implicito che questo non è il valore principale della classe, che ci può essere un certo numero di tali valori e che per ognuno di essi può essere descritto un costrutto.

O per una tale implementazione, è possibile descrivere solo una classe o struttura separata in cui implementare l'overloading, e in questa classe descrivere le variabili del tipo creato? Ma, se altre variabili della classe sono coinvolte nell'operazione di assegnazione, allora di nuovo, i conti non tornano.

In realtà, volevo implementare qualcosa di simile ai metodi Let/Set/Get in 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:
è possibile stampare EMPTY_VALUE come "EMPTY_VALUE" invece di 1797......?

sovraccarica semplicemente DoubleToString, se restituisce la stringa "EMPTY_VALUE" altrimenti chiamare ::DoubleToString

Motivazione: