Fehler, Irrtümer, Fragen - Seite 1776

 

Kompilierungsfehler

template<typename T>
int f( const T& ) { return sizeof( T ); }
class A {};
void OnStart()
{
        const A * const a = new A; //Error: 'T' - unexpected token
        f( a );
}
 

In der Metatrader 4 Hilfe über den iGator() Indikator

mode

[in]  Источник данных, идентификатор одной из линий индикатора. Mожет быть любой из следующих величин:

MODE_GATORJAW - синяя линия (линия челюсти аллигатора),
MODE_GATORTEETH - красная линия (линия зубов аллигатора),
MODE_GATORLIPS - зеленая линия (линия губ аллигатора).  


und hier ein Beispiel

double diff=iGator(NULL,0,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN,MODE_UPPER,1);


Datenquelle MODE_UPPER, ich verstehe, dass es einen Fehler in der Hilfe gibt

 

Kompilierungsfehler (oder vielmehr keine Fehlermeldung)

class A {
        A() { ::ArrayResize( i1, 1 ); }
        int i1[ ];
        int i2[1];
        void f1() const { i1[0] = 0; } //нет сообщения ошибки
        void f2() const { i2[0] = 0; } //Error: 'i2' - member of the constant object cannot be modified

};
 

Ich habe zwei Fehler bei der Behandlung von Maustastenklick-Ereignissen gefunden.

1. Behandlung des Mausradklick-Ereignisses in OnChartEvent(). Die Idee ist, dass die Funktion das Ereignis (id == CHARTEVENT_MOUSE_MOVE) erzeugt, wenn die linke Maustaste geklickt wird (mit und ohne sie zu halten), die rechte Maustaste (mit und ohne sie zu halten), aber wenn das Rad geklickt wird, wird das Ereignis nur erzeugt, wenn es gehalten wird. D.h. wenn Sie nur die mittlere Taste drücken und sofort wieder loslassen, wird das Ereignis nicht erzeugt!

2. Nach der Verarbeitung des Drückens der linken Maustaste (sparam == "1") wird das Ereignis sparam == "0" erzeugt. Nachdem die rechte Maustaste geklickt wurde (sparam == "2"), wird aus irgendeinem Grund das Ereignis sparam == "0" nicht erzeugt. Sollten nicht alle Maustasten auf die gleiche Weise behandelt werden? Ich schweige über das Klicken auf das Rad, weil, wie ich in Punkt 1 sagte - kein Ereignis erzeugt wird, wenn das Rad angeklickt wird.

Code prüfen:

#property indicator_chart_window
#property indicator_plots 0
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,true);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {

   return(rates_total);
  }
//+------------------------------------------------------------------+
//| Обработка события графика                                                                                                           |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
  {
   switch(id)
     {
      case CHARTEVENT_MOUSE_MOVE:
         FuncMove(lparam,dparam,sparam);
         break;
     }
  }
//+------------------------------------------------------------------+
//| Функция обработки события перемещения мыши                                                          |
//+------------------------------------------------------------------+
void FuncMove(const long lparam,// Х координата
              const double dparam,// Y координата
              const string sparam          // Строковое значение статуса кнопки
              )
  {
   Print(__FUNCTION__,": sparam = "+sparam);
  }
//+------------------------------------------------------------------+
//| Функция деинициализации индикатора                                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- Отписываемся от события передвижения мыши
   ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,false);
  }
//+------------------------------------------------------------------+
 
A100:

Kompilierungsfehler (oder vielmehr keine Fehlermeldung)

class A {
        A() { ::ArrayResize( i1, 1 ); }
        int i1[ ];
        int i2[1];
        void f1() const { i1[0] = 0; } //нет сообщения ошибки
        void f2() const { i2[0] = 0; } //Error: 'i2' - member of the constant object cannot be modified

};
in der Funktion f1 wird der Zustand des Objekts A nicht geändert, der Zustand des dynamischen Arrays A::i1 wird geändert, die Elemente A::i1 gehören nicht zum Objekt A
in der Funktion f2 ändert sich der Zustand des Objekts A, da das Array A::i2 nicht dynamisch ist - alle seine Elemente gehören zum Objekt A
 
Dratuti. Frage: Wie kann ich einem Nutzer, mit dem ich noch nicht korrespondiert habe, eine Nachricht über einen mobilen Browser (Android, Apple) schicken? Ich habe von verschiedenen Geräten aus nachgesehen - nirgendwo gibt es eine Schaltfläche "Nachricht senden" oder "Zu anderen hinzufügen". Die Seite des Benutzers sieht ungefähr so aus, ohne Schaltflächen:
 

Kompilierungsfehler

class A {};
class B {
        int A() { return 0; }
        void f( int ) {}
        void g() { f(A()); } //Error: 'A' - invalid cast operation
};
 
Andrey Sokolov:
Dratuti. Frage: Wie kann ich einem Nutzer, mit dem ich noch nicht korrespondiert habe, auf mobilen Browsern (Android, Apple) eine Nachricht schicken? Ich habe von verschiedenen Geräten aus nachgesehen - nirgends gibt es eine Schaltfläche "Nachricht senden" oder "Zu anderen hinzufügen". Die Seite des Benutzers sieht ungefähr so aus, ohne Schaltflächen:

Das sage ich schon seit langem. Bisher haben sie noch nichts gesagt.

 
Alexey Kozitsyn:

Zwei Fehler in der Behandlung von Maustastenereignissen gefunden.


Schauen wir nach.
 
Alexander:
Prüfen.

Danke, bitte überprüfen Sie die Nummer des ersten sichtbaren Balkens im Diagramm: ChartGetInteger( 0, CHART_FIRST_VISIBLE_BAR );

Der Punkt ist, dass wenn Sie das Scrollen des Charts deaktivieren und den letzten sichtbaren Balken beobachten, dann ändert sich im Moment einer neuen Kerze aus irgendeinem Grund seine Nummer, obwohl sich der Chart nicht bewegt! Die TF ist M1, um schneller prüfen zu können. Beginnen Sie mit dem Indikator:

#property indicator_chart_window
#property indicator_plots 0
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
   {
    //--- Подписываемся на событие движения мыши
         ChartSetInteger( 0, CHART_EVENT_MOUSE_MOVE, true );
         //---
    return(INIT_SUCCEEDED);
   }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
   {

    return(rates_total);
   }
//+------------------------------------------------------------------+
//| Обработка события графика                                        |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long& lparam,const double& dparam,const string& sparam)
   {
    switch( id )        
        {
         case CHARTEVENT_MOUSE_MOVE:
                 Print( __FUNCTION__," "+TimeToString( TimeCurrent(), TIME_DATE|TIME_SECONDS )+": sparam = "+sparam+", ",(int)ChartGetInteger( 0, CHART_FIRST_VISIBLE_BAR ));
                 break;
        }
   }
Grund der Beschwerde: