错误、漏洞、问题 - 页 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++;
   }
};
 
欢迎大家参与到关于CPU测试优化的话题 中来。
 

你好。

注意到在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);
*/  
}

当在测试器中选择选项标签时,这段代码可以正常工作。那么代码SendMessage中的高亮注释就会返回1。

但如果你改变标签,菜单被调用,但它没有选择 "加载 "项目--SendMessage返回0。同时,在打开的菜单中手动选择项目是可能的,没有任何问题。

你能告诉我问题出在哪里,SendMessage的返回值为零?

 

大家好!

我租了一个VPS,不再复制信号。当我拔掉VPS的插头时,一切正常。日志给出的错误。它能与什么有关?

2019.08.12 23:03:18.632 MQL5.community: 授权失败

2019.08.12 23:03:18.632 信号:'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)之间有什么区别?