Fehler, Irrtümer, Fragen - Seite 1743

 
Wie kann der Debugger sehen, welchen Wert die Funktion per Return zurückgegeben hat? Ich habe einen Haltepunkt bei Return gesetzt. Wenn ich sie erreiche, drücke ich F10. Wie kann ich sehen, was bei der Rückgabe herausgekommen ist?
 
fxsaber:
Wie kann der Debugger sehen, welchen Wert die Funktion per Return zurückgegeben hat? Ich habe einen Haltepunkt bei Return gesetzt. Wenn ich sie erreiche, drücke ich F10. Wie kann ich sehen, was ich zurückbekomme?
Umschalt + F9 ("Uhr hinzufügen")
Aber da anscheinend alles in Ihrem Code auf Klassen aufgebaut ist, können Sie etwa ein Dutzend wütende Briefe erwarten, in denen erklärt wird, wie schrecklich, schlecht und unbequem Meta Editore beim Debuggen ist))
 
In meiner Arbeit bin ich über ein gutes Beispiel gestolpert
class A
{
public:
  void operator =( const string Value ) const { return; }

  void operator =( const int Value ) { return; }
};

void OnStart()
{
  const A a;

  a = 0; // implicit conversion from 'number' to 'string'
}
Es war anfangs nicht klar, warum die Warnung ausgesprochen wurde. Aber ein cleverer Compiler.
 
Sergey Dzyublik:
Umschalt + F9 ("Uhr hinzufügen")
Was gibt es da noch hinzuzufügen?
 
Eine Variable, an die die Funktion einen Wert zurückgibt.
Wenn die Funktion nirgendwo zurückkehrt oder wenn es mehrere verschachtelte Aufrufe gibt, legen Sie eine Variable an, damit das Ergebnis der Funktion dorthin geschrieben werden kann, um es zu debuggen.
 
Sergey Dzyublik:
Die Variable, in die die Funktion den Wert gießt.
Wenn die Funktion nirgendwo zurückkehrt oder mehrere verschachtelte Aufrufe hat, erstellen Sie eine Variable, in die Sie das Ergebnis der Funktion schreiben können, um es zu debuggen.

Nun, jeder kluge Mensch kann das mit einer Variablen tun. Aber ich muss es tun, wie ein Narr - ohne es.

Es gibt eine Vielzahl solcher Funktionen.

  virtual bool SetProperty( const ENUM_CHART_PROPERTY_INTEGER id, const int Value ) const
  {
    return(::ChartSetInteger(this.chartID, id, Value));
  }

  virtual bool SetProperty( const ENUM_CHART_PROPERTY_DOUBLE id, const double Value ) const
  {
    return(::ChartSetDouble(this.chartID, id, Value));
  }

  virtual long GetProperty( const ENUM_CHART_PROPERTY_INTEGER Property, const int SubWindow = 0 ) const
  {
    return(::ChartGetInteger(this.chartID, Property, SubWindow));
  }
  
  virtual double GetProperty( const ENUM_CHART_PROPERTY_DOUBLE Property, const int SubWindow = 0 ) const
  {
    return(::ChartGetDouble(this.chartID, Property, SubWindow));
  }

Und jetzt müssen Sie in jede dieser Dateien eine Variable einfügen? Gibt es einen anderen Weg?

 
Warum kann OBJPROP_YOFFSET nicht negativ gemacht werden? In Help gibt es kein uint.
 
fxsaber:

Und jetzt fügen Sie eine Variable in jede dieser Variablen ein? Gibt es einen anderen Weg?

Offensichtlich müssen diese Funktionen umbenannt werden: GetPropertyLong, GetPropertyDbl. Warum haben sie den gleichen Namen?

Für die Zukunft haben die Entwickler versprochen, Funktionsvorlagen so zu modifizieren, dass sie auf folgende Weise aufgerufen werden können: GetProperty<long>(...) Aber Sie werden eine Vorlage nicht virtuell machen.

 
Alexey Navoykov:

Offensichtlich sollten diese Funktionen umbenannt werden: GetPropertyLong, GetPropertyDbl. Warum haben sie denselben Namen?

Ich verstehe nicht, warum sie unterschiedliche Namen haben. Ich benutze diese.

this.SetProperty(OBJPROP_XSIZE, (int)CHARTOBJECT::GetProperty(CHART_WIDTH_IN_PIXELS)); // Ширина объекта по оси X в пикселях
this.SetProperty(OBJPROP_YSIZE, (int)CHARTOBJECT::GetProperty(CHART_HEIGHT_IN_PIXELS)); // Ширина объекта по оси Y в пикселях

this.SetProperty(OBJPROP_DATE_SCALE, false); // Признак отображения шкалы времени для объекта "График"

this.SetProperty(OBJPROP_BACK, false); // Объект на заднем плане

this.SetProperty(CHART_AUTOSCROLL, false); // Режим автоматического перехода к правому краю графика
this.SetProperty(CHART_SHIFT, false); // Режим отступа ценового графика от правого края

this.SetProperty(CHART_SHOW_OHLC, false); // Отображение в левом верхнем углу значений OHLC
this.SetProperty(CHART_SHOW_PERIOD_SEP, false); // Отображение вертикальных разделителей между соседними периодами
this.SetProperty(CHART_SHOW_VOLUMES, CHART_VOLUME_HIDE); // Отображение объемов на графике
this.SetProperty(CHART_SHOW_TRADE_LEVELS, false); // Отображение на графике торговых уровней (уровни открытых позиций, Stop Loss, Take Profit и отложенных ордеров)  

this.SetProperty(CHART_MODE, CHART_LINE); // Тип графика (свечи, бары или линия)
this.SetProperty(CHART_COLOR_CHART_LINE, clrNONE); // Цвет линии графика и японских свечей "Доджи"

this.SetProperty(CHART_SCALEFIX, true); // Цвет линии графика и японских свечей "Доджи"

this.SetProperty(CHART_FIXED_MAX, 1.5); // Фиксированный максимум графика
this.SetProperty(CHART_FIXED_MIN, 1.0); // Фиксированный минимум графика

Für die Zukunft haben die Entwickler versprochen, Funktionsvorlagen so zu ändern, dass sie auf diese Weise aufgerufen werden können: GetProperty<long>(...) Aber man kann eine Vorlage nicht virtuell machen.

Ich verstehe das Beispiel nicht.

Ich würde mich freuen, Ihre Kritik (und die anderer kompetenter Forumsnutzer) an der architektonischen Stilistik und dem Tonfall des Programmierers an meinem Code ernsthaft zu hören. Ich werde es in Kodobase veröffentlichen, sobald ich es fertiggestellt habe. Es ist nie eine Schande, zu lernen.

 
Wenn Sie versuchen, einen Indikator, Expert Advisor oder ein Skript aus dem "Navigator"-Fenster zu löschen, fordert MT4 Sie auf, den Löschvorgang zu bestätigen. Unabhängig davon, was Sie zu löschen versuchen (Indikator, EA oder Skript), ändert sich der Fragetext also nicht.

Die universelle Frage "EA entfernen?"

MT4 Build 1010 (19 Aug 2016)