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

 
司会者に連絡する方法を知っている人はいますか?それとも、誰かヒントをくれるかな?私の統計では、一度も補充されていないのに、補充されたと表示されています。その原因と対策は?
 

この動作は正しいのでしょうか?

//+------------------------------------------------------------------+

//|                                                                  |

//+------------------------------------------------------------------+

class name

  {

public:

   int func()

     {

      static int t=0;

      t++;

      return t;

     }

  };

name A,B;

//+------------------------------------------------------------------+

void OnInit()

  {

   Print("A "+A.func());

   Print("B "+B.func());

  }

//+------------------------------------------------------------------+

/*

2019.08.10 20:39:57.533 MyTest (EURUSD_i,H1) A 1

2019.08.10 20:39:57.533 MyTest (EURUSD_i,H1) B 2

期待値

2019.08.10 20:39:57.533 MyTest (EURUSD_i,H1) A 1

2019.08.10 20:39:57.533 MyTest (EURUSD_i,H1) B 1

クラスの異なるインスタンスが宣言されるため

 
Vladimir Pastushak:

この動作は正しいのでしょうか?

勿論
 
TheXpert:
勿論

つまり、スタティック変数は、そのオブジェクトの外から見えるということですか?

 
Vladimir Pastushak:

つまり、スタティック変数は、そのオブジェクトの外から見えるということですか?

そして、もしあなたのやり方だったら、静電気はどうなるのでしょう?

class name{
  int t=0;
public:
   int func() {
     return t++;
   }
};
 

こんにちは。

MT5 2085で複数のブローカーで再現されるバグに気づきました。


1)矩形の終了日が未来(例:2020年)の場合、ズームアウトすると画面から消え、下にズームインすると再び現れる。

2) チャートに未来の日付のバーがある場合(例:2019年10月からバーが始まるカスタムティックチャート)、線と長方形を選択してチャート上でクリックして描画しても何も起こらないので、描画することができません。すると、そのオブジェクトが曲がって描かれていたことが判明します。


何が問題なのかを考え、エラーを修正してください。必要であれば、ビデオも作れます。ありがとうございました。

 
よろしくお願いします。テスターの以下のコードでは、対応するメニューを呼び出してセットファイルの読み込みウィンドウを開いています。
#include <WinAPI\winuser.mqh>

#define  GA_ROOT           0x00000002

#define  WM_COMMAND                     0x0111
#define  WM_CONTEXTMENU     0x007B

#define  DTM_SETSYSTEMTIME 0x1002

#define  MN_GETHMENU     0x01E1  

#define  PRINT(x) ; Print(#x, ":", string(x))
#define  PRINT64(x) ; printf("%s%s%#.08x", #x, ":", x)

long GetHandle(long handle, int &controls[]){
   long next_handle = handle;                                                                        
   for (int i = 0; i < ArraySize(controls); i++){
      next_handle = user32::GetDlgItem(next_handle, controls[i]);
      PRINT64(next_handle);
   }           
   return next_handle;                
} 

void OnStart(){
  long RootHandle = user32::GetAncestor(::ChartGetInteger(0, CHART_WINDOW_HANDLE), GA_ROOT);
  PRINT64(RootHandle);  
  
  int controls[] = {0xE81E, 0x804E, 0x28EF, 0x28FE}; 
  long handle = GetHandle(RootHandle, controls);
  PRINT64(handle);
  
  
//  PRINT(user32::SendMessageW(handle, WM_CONTEXTMENU, 0, -1));
  PRINT(user32::PostMessageW(handle, WM_CONTEXTMENU, 0, -1));
  PRINT("Sleep");
  Sleep(1000);

  const long hpopup=user32::FindWindowW("#32768", NULL);
  PRINT64(hpopup);

  const long hmenu = user32::SendMessageW(hpopup, MN_GETHMENU,0,0);
  PRINT64(hmenu);
  
  uint id=user32::GetMenuItemID(hmenu, 0);
  PRINT64(id);
  
  PRINT(user32::SendMessageW(RootHandle,WM_COMMAND,id,0)); // Выбор пункта меню "Загрузить"
/*
  Sleep(100);
  
  const long hwnd = GetLastActivePopup(RootHandle);
  PRINT64(hwnd);
*/  
}

このコードは、TesterでOptionsタブが選択されている場合、正常に動作します。そして、SendMessageのコード内のハイライトされたコメントは1を返します。

しかし、タブを変更すると、メニューは呼び出されますが、「ロード」項目は選択されず、SendMessageは0を返します。同時に、開いたメニューで手動で項目を選択することは問題なく可能です。

SendMessageが0を返すというのは、どこが問題なのか、教えてください。

 

みなさん、こんにちは。

VPSを借りてシグナルをコピー するのをやめました。VPSのプラグを抜くと、すべてうまくいく。ログはエラーを出します。何に関連することができるのか?

2019.08.12 23:03:18.632 MQL5.community: 権限付与に失敗しました。

2019.08.12 23:03:18.632 Signal: '77060013': シグナル一覧の取得に失敗しました、接続エラーです。

ファイル:
 

識別子の許容文字数についての質問です。例

#define  MACRO( x )              x## AAA
void OnStart()
{
        int xyz;
        int MACRO( BBB ); //нормально
}

その結果

スペース付きの変数識別子を 受信した。

例をこのように書き直すと。

#define  MACRO( x )              x##:AAA
void OnStart()
{
        { int MACRO( BBB ); } //(1) //нормально
        { int BBB:AAA;      } //(2) //Error: 'AAA' - semicolon expected
}
とすると、(1)と(2)の違いは何か、という矛盾を定式化できる。