エラー、バグ、質問 - ページ 1776

 

コンパイルエラー

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

メタトレーダー4ヘルプのiGator()インジケーターについて

mode

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

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


で、以下はその例です。

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


データソース MODE_UPPER、ヘルプにエラーがあるとのことですが

 

コンパイルエラー(というかエラーメッセージ なし)

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

};
 

マウスボタンクリックイベントを処理する 際に、2つのエラーを発見しました。

1. OnChartEvent()でマウスホイールクリックイベントを処理する。この関数は、マウスの左ボタンをクリックしたとき(押したままでも)、マウスの右ボタンをクリックしたとき(押したままでも)、イベント(id == CHARTEVENT_MOUSE_MOVE)を生成しますが、ホイールをクリックした場合は、押したときだけイベントを生成する、というものです。つまり、中キーを押してすぐに離すと、イベントは発生しないのです

2.マウスの左ボタンが押された(sparam == "1")処理後に、イベントsparam == "0 "が生成されます。マウスの右ボタンをクリックした後(sparam == "2")、なぜかイベントsparam == "0 "が生成されない。すべてのマウスボタンを同じように扱うべきではないでしょうか?ホイールのクリックについては、ポイント1で述べたように、ホイールがクリックされてもイベントは発生しないので、黙認しています。

コードを確認する。

#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:

コンパイルエラー(というかエラーメッセージが 出ない)

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

};
f1 関数では,A オブジェクトの状態は変化せず,動的配列 A::i1 の状態が変化し,A::i1 の要素は A オブジェクトに属さない.
なぜなら,A::i2 配列は動的ではなく,その要素はすべて A オブジェクトに属しているからです.
 
ドラツチQuestion: モバイルブラウザ(android、apple)で、まだ対応していないユーザーにメッセージを送るにはどうすればよいですか?複数のデバイスから見てみましたが、「メッセージを送信する」ボタンも「他の人に追加する」ボタンもどこにもありません。ユーザーのページはこのような感じで、ボタンはありません。
 

コンパイルエラー

class A {};
class B {
        int A() { return 0; }
        void f( int ) {}
        void g() { f(A()); } //Error: 'A' - invalid cast operation
};
 
Andrey Sokolov:
ドラツチ質問:モバイルブラウザ(android、apple)で、まだ対応していないユーザーにメッセージを送るにはどうすればよいですか?いくつかの異なるデバイスから見てみましたが、「メッセージを送信する」ボタンも「他の人に追加する」ボタンもどこにもありません。ユーザーのページはこのような感じで、ボタンはありません。

私はずっとそう言っているのですが、今のところ何も言ってきません。

 
Alexey Kozitsyn:

マウスボタンのイベント処理に 2つのエラーを発見。


確認しよう。
 
Alexander:
チェックする。

チャート上の最初の可視バーの数を確認してください: ChartGetInteger( 0,CHART_FIRST_VISIBLE_BAR);

ポイントは、チャートのスクロールを無効にして、最後に表示されたバーを監視している場合、新しいローソクの瞬間に、チャートは動かないのに、何らかの理由でその数字が変わることですTFは、より速くチェックできるようにするため、M1となっています。インジケーターからスタートします。

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