Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri - sayfa 58

 
Test cihazında, TimeCurrent() ile değil, yalnızca TimeTradeServer() aracılığıyla geçerli saati doğru olarak almak mümkündür.
 
fxsaber :
Test cihazında, TimeCurrent() ile değil, yalnızca TimeTradeServer() aracılığıyla geçerli saati doğru olarak almak mümkündür.
Çok tartışmalı bir açıklama.
 
Slava :
Çok tartışmalı bir açıklama.
 void OnTick ()
{
   Print ( TimeCurrent ());
  
   Sleep ( 3600 * 1000 );
  
   Print ( TimeCurrent ());
   Print ( TimeTradeServer ());     
  
   ExpertRemove ();
}

Sonuç

 2017.10 . 02 00 : 03 : 03    2017.10 . 02 00 : 03 : 03
2017.10 . 02 01 : 03 : 03    2017.10 . 02 01 : 02 : 59
2017.10 . 02 01 : 03 : 03    2017.10 . 02 01 : 03 : 03


TimeCurrent, test cihazının (sunucunun) değil, ana sembolün son işaretinin zamanını döndürür. Şu anki sunucu saatini milisaniye cinsinden tam olarak bulmak mümkün değildir.

 

tünaydın . hizmet dizileri hakkında bilgi edinin https://www.mql5.com/ru/docs/constants/objectconstants/enum_anchorpoint (son örnekte)

duble Ups[],Downs[];
    tarihsaatSaat [];

bir yerde tüm hizmet dizilerinin bir listesi var mı?

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Способы привязки объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Способы привязки объектов
  • www.mql5.com
Графические объекты Text, Label, Bitmap и Bitmap Label (OBJ_TEXT, OBJ_LABEL, OBJ_BITMAP и OBJ_BITMAP_LABEL) могут иметь один из 9 различных способов привязки своих координат, задаваемых свойством OBJPROP_ANCHOR. – объекты имеет ширину и высоту. Если указано "только для чтения", то это означает, что значения ширины и высоты вычисляются...
 
bu sinyali takip ediyorum bir hafta daha takip edeceğim

ve sonra görelim

tr/sinyaller/352123

 

Korumalı yöntemleri/alanları kullanmanıza izin veren bir dil hilesi.

Misal

 #include <Canvas\Canvas.mqh>

// Помещает картинку в ресурс
bool ToResource( const string Name, const uint &Data[], const uint Width )
{
   return (:: ResourceCreate (Name, Data, Width, (Width == 0 ) ? :: ArraySize (Data) : :: ArraySize (Data) / Width, 0 , 0 , Width, :: COLOR_FORMAT_ARGB_NORMALIZE ));
}

// Прием использования protected полей/методов
class CANVAS : public CCanvas
{
public :
   // Загрузка картинки из BMP-файла
   static bool BMPToArray( const string FileName, uint &Data[], int &Width )
  {
    CANVAS Canvas;
    
     const bool Res = Canvas.LoadFromFile(FileName);
    
     if (Res)
    {
       ArrayCopy (Data, Canvas.m_pixels);
      
      Width = Canvas.m_width;
    }
    
     return (Res);
  }
};

// Грузим BMP с альфаканалом не из ресурса, а из файла
void OnStart ()
{     
   const string Resource = "::Resource" ;
         
   uint Data[], Width;   
  
   if (CANVAS::BMPToArray( "Picture.bmp" , Data, Width) &&
      ToResource(Resource, Data, Width))
  {
   ObjectCreate ( 0 , __FILE__ , OBJ_BITMAP_LABEL , 0 , 0 , 0 );   
   ObjectSetString ( 0 , __FILE__ , OBJPROP_BMPFILE , Resource);
        
   // Сконвертировали BMP в PNG (без учета прозрачности)
   BitmapObjectToFile( 0 , __FILE__ , "Picture.png" ); // https://www.mql5.com/ru/forum/170952/page57#comment_5985505
  }
}
 
Bu konu ile ilgili olmayan yorumlar " MQL4, yardım ve algoritmalar ve kodlar hakkında tartışma " bölümüne taşınmıştır.
 
Bu özelliğinden dolayı

şablon parametrelerinin yazılması katıdır, örtük atama ile uzmanlaşmaya izin verilmez

giriş parametrelerinde yalnızca temel sınıfın işaretçilerini kabul eden yazma işlevleri elde etmek mümkündür ve torunlar derleme aşamasında atılır.


Misal

 template < typename T>
void StrongCondition( T, T ) {}

class A
{
public :
   int i;
  
   template < typename T>  
   void SetStong( T Value )
  {
    StrongCondition(& this , Value);
    
     this .i = Value.i;
  }
  
   void Set( A* Value )
  {
     this .i = Value.i;
  }
};

class B : public A {};

void OnStart ()
{
  A a;
  B b;
  
  a.Set(&b);   
  a.SetStong(&a);
  
  a.SetStong(&b);       // потомки в явном виде запрещены
  a.SetStong((A*)(&b)); // только явное приведение разрешено
}
 
Bir const sınıfı nesnesinin alanlarını değiştirmek veya onun const olmayan yöntemlerini çağırmak mümkün müdür? -Yapabilir!
 template < typename T>
T GetMe( const T Ptr )
{
   return ((T)Ptr);
}

class A
{
public :  
   int i;
};

void OnStart ()
{
   const A a;

   GetMe(&a).i = 1 ;
  
   Print (a.i); // 1
}

Ben de bu özelliği sevmiyorum. Yetkisiz erişime karşı sigortalı olduğunu sanıyordum. Ancak berbat! const yapıları ile bu, elbette, çalışmaz. Bu yüzden bu boşluğun farkında olun.