Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1323

 
Ist es möglich, EMPTY_VALUE als "EMPTY_VALUE" anstelle des Wertes 1797...... zu drucken?
 
Fast235:
Ist es möglich, EMPTY_VALUE als "EMPTY_VALUE" anstelle von 1797...... zu drucken?

mehr Infos... Code

"EMPTY_VALUE" kann nicht sein 1797......

 
MakarFX:
mehr...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:
Was genau brauchen Sie für den Druck?
 
MakarFX:
Was genau brauchen Sie für den Druck?

Ich danke Ihnen,

EMPTY_VALUE kann es nur an einer Stelle geben))

 
Fast235:

Ich danke Ihnen,

EMPTY_VALUE kann es nur an einer Stelle geben))

Ich bin nicht so ein Experte wie Sie, aber...

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

Ich möchte eine Aufzeichnung verwenden können, anstatt

test.SetValue1(1,0.5);

wäre es möglich, einen Eintrag zu verwenden

test.Value1(1)=0.5;

Ich vermute, dass dies, wenn überhaupt, nur mit einer Überlastung möglich wäre. Aber mir fehlen Wissen und Phantasie.

Falls dies möglich ist, teilen Sie uns bitte mit, wie Sie es umsetzen können.

 
Yurij Kozhevnikov:

Ich möchte eine Aufzeichnung verwenden können, anstatt

wäre es möglich, einen Eintrag zu verwenden

Ich vermute, dass dies, wenn überhaupt, nur durch Überlastung möglich wäre. Aber mir fehlt das Wissen und die Phantasie.

Falls dies möglich ist, teilen Sie uns bitte mit, wie wir es umsetzen können.

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

Danke, eine solche Implementierung ist mir auch schon eingefallen, aber es ist nicht ganz das Gleiche, weil Value1 selbst fehlt. Das heißt, das von mir erstellte Beispiel ist natürlich extrem vereinfacht, aber es impliziert, dass dies nicht der Hauptwert der Klasse ist, dass es eine Reihe solcher Werte geben kann und dass für jeden ein solches Konstrukt beschrieben werden kann.

Oder ist es bei einer solchen Implementierung möglich, nur eine separate Klasse oder Struktur zu beschreiben, in der die Überladung implementiert wird, und in dieser Klasse Variablen des erstellten Typs zu beschreiben? Wenn aber noch andere Variablen der Klasse an der Zuweisung beteiligt sind, dann passt das wiederum nicht zusammen.

Eigentlich wollte ich etwas ähnliches wie Let/Set/Get-Methoden in vbs implementieren.

"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:
Ist es möglich, EMPTY_VALUE als "EMPTY_VALUE" anstelle von 1797...... zu drucken?

DoubleToString einfach überladen, wenn es die Zeichenkette "EMPTY_VALUE" zurückgibt sonst ::DoubleToString aufrufen