Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1323

 
est-il possible d'imprimer EMPTY_VALUE comme "EMPTY_VALUE" au lieu de la valeur 1797...... ?
 
Fast235:
Est-il possible d'imprimer EMPTY_VALUE comme "EMPTY_VALUE" au lieu de 1797...... ?

plus d'infos... code

"EMPTY_VALUE" ne peut pas être 1797......

 
MakarFX:
plus...code
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:
De quoi avez-vous besoin exactement pour l'impression ?
 
MakarFX:
De quoi avez-vous besoin exactement pour l'impression ?

Merci,

il ne peut y avoirEMPTY_VALUE qu'à un seul endroit;))

 
Fast235:

Merci,

il ne peut y avoirEMPTY_VALUE qu'à un seul endroit;))

Je ne suis pas un expert comme vous, mais...

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

Je souhaiterais pouvoir utiliser un enregistrement au lieu de

test.SetValue1(1,0.5);

il serait possible d'utiliser une entrée

test.Value1(1)=0.5;

Je soupçonne que, si c'est possible, ce serait avec une surcharge. Mais je manque de connaissances et d'imagination.

Si cela est possible, veuillez indiquer comment le mettre en œuvre.

 
Yurij Kozhevnikov:

Je souhaiterais pouvoir utiliser un enregistrement au lieu de

il serait possible d'utiliser une entrée

Je soupçonne que, si c'est possible, ce serait avec une surcharge. Mais je manque de connaissances et d'imagination.

Si cela est possible, veuillez indiquer comment le mettre en œuvre.

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

Merci, j'ai pensé à cette mise en œuvre, mais ce n'est pas tout à fait la même chose en raison de l'absence de Value1 lui-même. Autrement dit, l'exemple que j'ai créé est bien sûr extrêmement simplifié, mais il est sous-entendu que ce n'est pas la valeur principale de la classe, qu'il peut y avoir un certain nombre de valeurs de ce type et que pour chacune d'entre elles, une construction peut être décrite.

Ou bien, pour une telle implémentation, est-il possible de ne décrire qu'une classe ou une structure distincte dans laquelle on implémente la surcharge, et dans cette classe de décrire les variables du type créé ? Mais, si d'autres variables de la classe sont impliquées dans l'opération d'affectation, là encore, le compte n'y est pas.

En fait, je voulais implémenter quelque chose de similaire aux méthodes 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:
Est-il possible d'imprimer EMPTY_VALUE comme "EMPTY_VALUE" au lieu de 1797...... ?

surcharger simplement DoubleToString, s'il retourne la chaîne "EMPTY_VALUE". sinon, appelez ::DoubleToString