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自体がないため、ちょっと違いますね。つまり、私が作った例はもちろん極めて単純化されたものですが、これがクラスの主要な価値ではなく、このような価値はいくつもありうるし、それぞれについてこのような構成が記述できることを暗示しているのです。

あるいは、そのような実装の場合、オーバーロードを実装するクラスや構造体だけを別に記述し、そのクラス内に、作成した型の変数を記述することは可能でしょうか?しかし、クラスの他の変数が割り当て操作に関与している場合、再び、辻褄が合わなくなる。

実は、Let/Set/Getメソッドと 似たようなものを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:
EMPTY_VALUEを 1797ではなく「EMPTY_VALUE」と表示することは可能でしょうか......?

単に DoubleToString をオーバーロードして、もし文字列"EMPTY_VALUE" が返ってきたらそうでない場合は ::DoubleToString を呼び出します。