新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1323

 
是否可以将EMPTY_VALUE 打印为 "EMPTY_VALUE "而不是1797......?
 
Fast235:
是否可以将EMPTY_VALUE 打印为 "EMPTY_VALUE "而不是1797......?

更多信息...代码

"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本身,所以不大相同。也就是说,我所创造的例子当然是极其简化的,但它暗示了这并不是该类的主要价值,可以有许多这样的价值,对于每一个这样的结构都可以进行描述。

或者对于这样的实现,是否可以只描述一个单独的类或结构来实现重载,并在这个类中描述创建类型的变量?但是,如果该类的其他变量也参与了赋值操作,那么同样的,它也不会增加。

实际上,我想在vbs中 实现类似于Let/Set/Get方法 的东西。

"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 打印为 "EMPTY_VALUE "而不是1797......?

简单地重载DoubleToString,如果它返回字符串"EMPTY_VALUE" 否则就调用::DoubleToString

原因: