Hatalar, hatalar, sorular - sayfa 2528

 
Moderatörle nasıl iletişim kurulacağını kim bilebilir? Ya da belki birisi söyleyebilir? Hiç doğmamış olmasına rağmen istatistiklerde bir ikmal var. Nedir ve nasıl düzeltilir?
 

Bu davranış doğru mu?

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

//|                                                                  |

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

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

beklenen

2019.08.10 20:39:57.533 Testim (EURUSD_i,H1) 1

2019.08.10 20:39:57.533 Testim (EURUSD_i,H1) B1

Farklı sınıf örnekleri bildirildiğinden

 
Vladimir Pastushak :

Bu davranış doğru mu?

kesinlikle
 
TheXpert :
kesinlikle

Yani, statik değişkenler nesnelerinin dışında görülebilir mi?

 
Vladimir Pastushak :

Yani, statik değişkenler nesnelerinin dışında görülebilir mi?

Ve eğer senin yolun olsaydı, o zaman statiğin anlamı nedir?

 class name{
   int t= 0 ;
public :
   int func() {
     return t++;
   }
};
 
Herkesten CPU'yu optimizasyon için test etme konusuna katılmasını rica ediyorum.
 

Merhaba,

MT5 2085'te birkaç aracıda çoğaltılan hataları fark ettim.


1) Dikdörtgenin gelecekte bir bitiş tarihi varsa (örneğin, 2020), maksimum yakınlaştırmada ekrandan kaybolur, yakınlaştırma azaltıldığında yeniden görünür.

2) Grafikteki çubukların gelecekten tarihleri varsa (örneğin, çubukların Ekim 2019'dan başladığı özel bir onay grafiği), bir çizgi ve bir dikdörtgen seçip tıkladığınızda, üzerinde çizim yapmak imkansızdır. grafik, hiçbir şey olmuyor. Sonra nesnenin eğri çizildiği ortaya çıktı.


Lütfen neyin yanlış olduğunu bulun ve hatayı düzeltin. Gerekirse video çekebilirim. Teşekkür ederim!

 
Lütfen çözmeme yardım et. Test Cihazındaki aşağıdaki kod, ilgili menüyü çağırarak bir set dosyası yüklemek için bir pencere açar.
 #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);
*/   
}

Bu kod, Test Cihazında Seçenekler sekmesi seçildiğinde düzgün çalışır. Ardından koddaki yorumlanmış SendMessage 1 değerini döndürür.

Ancak sekmeyi değiştirirseniz menü çağrılır ancak içinde "İndir" öğesi seçili değildir - SendMessage 0 döndürür. Aynı zamanda sorunsuz açılan menüde öğeyi manuel olarak seçebilirsiniz.

Söyle bana, SendMessage'ın sıfır döndürdüğü nokta nerede?

 

Merhaba!

Kiralık VPS, sinyaller kopyalamayı durdurdu . VPS'yi kapattığımda - her şey çalışıyor. Günlük hata veriyor. Ne ile bağlanabilir?

2019.08.12 23:03:18.632 MQL5.community: yetkilendirme başarısız oldu

2019.08.12 23:03:18.632 Sinyal: '77060013': sinyal listesi alınamadı, bağlantı hatası

Dosyalar:
 

Tanımlayıcılardaki geçerli karakterler hakkında soru. Misal

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

Sonuç olarak:

boşluklu bir değişken tanımlayıcı aldı.

Örneği şu şekilde yeniden yazarsak:

 #define MACRO( x )              x ##:AAA
void OnStart ()
{
        { int MACRO( BBB ); } //(1) //нормально
        { int BBB:AAA;      } //(2) //Error: 'AAA' - semicolon expected
}
o zaman bir çelişki formüle edebiliriz: (1) ve (2) arasındaki fark nedir?