Errores, fallos, preguntas - página 1743

 
¿Cómo puede el depurador ver qué valor devolvió la función mediante el retorno? Puse un punto de interrupción en el retorno. Cuando llego a ella, pulso F10. ¿Cómo puedo ver lo que ha salido de la devolución?
 
fxsaber:
¿Cómo puede el depurador ver qué valor devolvió la función mediante el retorno? Puse un punto de interrupción en el retorno. Cuando llego a ella, pulso F10. ¿Cómo puedo ver lo que hay a cambio?
Mayúsculas + F9 ('añadir reloj')
Pero como aparentemente todo en tu código está construido sobre clases, puedes esperar una docena de cartas enojadas explicando cómo Meta Editore es horrible, malo e inconveniente con la depuración))
 
Encontré un buen ejemplo en el mío
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'
}
Al principio no era obvio el porqué de la advertencia. Sin embargo, un compilador inteligente.
 
Sergey Dzyublik:
Mayúsculas + F9 ('añadir reloj')
¿Qué quieres añadir?
 
Una variable a la que la función devuelve un valor.
Si no devuelve a ninguna parte, o si hay varias llamadas anidadas, cree una variable para que el resultado de la función pueda escribirse allí y depurarse.
 
Sergey Dzyublik:
La variable en la que la función arroja el valor.
Si no devuelve en ningún sitio, o tiene varias llamadas anidadas, crea una variable para poder escribir allí el resultado de la función y depurarla.

Bueno, cualquier persona inteligente puede hacerlo con una variable. Pero tengo que hacerlo como un tonto: sin él.

Hay muchas funciones como ésta.

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

¿Y ahora tienes que insertar una variable en cada uno de ellos? ¿Hay alguna otra manera?

 
¿Por qué no se puede hacer negativo el OBJPROP_YOFFSET? No hay uint en la ayuda.
 
fxsaber:

¿Y ahora insertar una variable en cada uno? ¿Hay alguna otra manera?

Obviamente estas funciones deben ser renombradas: GetPropertyLong, GetPropertyDbl. ¿Por qué tienen el mismo nombre?

En el futuro, los desarrolladores prometieron modificar las plantillas de funciones para poder llamarlas de la siguiente manera: GetProperty<long>(...) Pero no hará que una plantilla sea virtual.

 
Alexey Navoykov:

Obviamente, estas funciones deberían cambiar de nombre: GetPropertyLong, GetPropertyDbl. ¿Por qué tienen el mismo nombre?

No entiendo por qué tienen nombres diferentes. Yo uso este.

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); // Фиксированный минимум графика

En el futuro, los desarrolladores prometieron modificar las plantillas de funciones para que puedan llamar de esta manera: GetProperty<long>(...) Pero no hará que esta plantilla sea virtual.

No entiendo el ejemplo.

Estaré encantado de escuchar sus críticas (y las de otros usuarios competentes del foro) sobre la estilística arquitectónica y el tono de programador de mi código. Lo publicaré en kodobase, en cuanto lo termine. Nunca es una pena aprender.

 
Cuando intentas eliminar un indicador, Asesor Experto o script desde la ventana "Navegador", MT4 te pide que confirmes la eliminación. Por lo tanto, no importa lo que esté tratando de eliminar (indicador, EA o script), el texto de la pregunta no cambia.

La pregunta universal "¿Quitar el EA?"

MT4 Build 1010 (19 Ago 2016)