Errori, bug, domande - pagina 1743

 
Come può il debugger vedere quale valore ha restituito la funzione tramite return? Ho messo un breakpoint sul ritorno. Quando ci arrivo, premo F10. Come faccio a vedere cosa è uscito dal ritorno?
 
fxsaber:
Come può il debugger vedere quale valore ha restituito la funzione tramite return? Ho messo un breakpoint sul ritorno. Quando ci arrivo, premo F10. Come faccio a vedere cosa c'è in cambio?
shift + F9 ('aggiungi orologio')
Ma dato che apparentemente tutto nel tuo codice è costruito su classi, puoi aspettarti più di una dozzina di lettere arrabbiate su come Meta Editore sia orribile, cattivo e scomodo per il debug))
 
Mi sono imbattuto in un buon esempio nel mio
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'
}
Non era ovvio all'inizio perché l'avvertimento. Un compilatore intelligente, però.
 
Sergey Dzyublik:
shift + F9 ('aggiungi orologio')
Cosa vuoi aggiungere?
 
Una variabile a cui la funzione restituisce un valore.
Se non ritorna da nessuna parte, o se ci sono diverse chiamate annidate, create una variabile in modo che il risultato della funzione possa essere scritto lì e debuggato.
 
Sergey Dzyublik:
La variabile in cui la funzione lancia il valore.
Se non ritorna da nessuna parte, o ha diverse chiamate annidate, create una variabile in modo da potervi scrivere il risultato della funzione e fare il debug.

Beh, ogni persona intelligente può farlo con una variabile. Ma ho bisogno di farlo come un pazzo - senza.

Ci sono molte funzioni come questa.

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

E ora devi inserire una variabile in ognuno di essi? C'è un altro modo?

 
Perché OBJPROP_YOFFSET non può essere reso negativo? Non c'è nessun uint in Help.
 
fxsaber:

E ora inserire una variabile in ognuno di essi? C'è un altro modo?

Ovviamente queste funzioni devono essere rinominate: GetPropertyLong, GetPropertyDbl. Perché hanno lo stesso nome?

In futuro, gli sviluppatori hanno promesso di modificare i modelli di funzione per poterli chiamare nel modo seguente: GetProperty<long>(...) Ma non si renderà virtuale un modello.

 
Alexey Navoykov:

Ovviamente queste funzioni dovrebbero essere rinominate: GetPropertyLong, GetPropertyDbl. Perché hanno lo stesso nome?

Non capisco perché hanno nomi diversi. Io uso questo.

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

In futuro, gli sviluppatori hanno promesso di modificare i modelli di funzione in modo che possano chiamare in questo modo: GetProperty<long>(...) Ma non renderete questo modello virtuale.

Non capisco l'esempio.

Sarei felice di ascoltare le tue (e quelle di altri utenti competenti del forum) critiche (in tutta serietà) sulla stilistica architettonica e sul tono da programmatore del mio codice. Lo posterò in Kodobase, non appena l'avrò finito. Non è mai un peccato imparare.

 
Quando si cerca di eliminare un indicatore, Expert Advisor o script dalla finestra "Navigator", MT4 chiede di confermare l'eliminazione. Quindi, non importa cosa stai cercando di cancellare (indicatore, EA o script), il testo della domanda non cambia.

La domanda universale "Rimuovere EA?

MT4 Build 1010 (19 agosto 2016)