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

 
Igor Makanu # :

Not: Ayrıca formun makrolarını da gördüm

anlamadım

 
fxsaber # :

anlamadım

internette böyle bir makronun rahatlığı hakkında birçok bilgi var, google "makro iken 0"

https://russianblogs.com/article/9410298326/

 

Bu iş parçacığında uzun zaman önce while (0) örneği vardı

https://www.mql5.com/en/forum/170952/page141#comment_12897922

Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • 2019.07.30
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
 
mktr8591 # :
Her ihtimale karşı açıklığa kavuşturacağım - bu sadece statik içindir (hepsi C ++ ile ilgilidir). Yerel değişkenler için, kullanıcı tanımlı bir torus varsa, o zaman nulling yoktur.

OOP ile hiçbir şekilde çelişmeyen açıklamanın kendisini beğendim.

Basit bir yapı nesnesi oluşturduğunuzda aşağıdakiler gerçekleşir:

  1. Yapı için bellek ayrılmıştır - herhangi bir çöp var.
  2. Yapıcı bu parça üzerinde başlatılır.

{} aracılığıyla bir bildirim olduğunda, 1-2 paragrafları arasına bir tane daha eklenir - ayrılan belleği sıfırlarla doldurur.


Bu mantıkla OOP hiçbir şekilde zarar görmez. geçerli mekanizma

 
fxsaber # :

    {} aracılığıyla bir bildirim olduğunda, 1-2 paragrafları arasına başka bir bildirim eklenir - ayrılan belleği sıfırlarla doldurur.

    Bu mantıkla OOP hiçbir şekilde zarar görmez. geçerli mekanizma

    Mantığın kendisi burada acı çekiyor: yapıcı yine de olacaksa neden sıfıra sıfırla?

     
    A100 # :

    Mantığın kendisi burada acı çekiyor: yapıcı yine de olacaksa neden sıfıra sıfırla?

    Çünkü kurucuya sahip bir yapı bir birlik içinde kullanılamaz.

     
    Ilyas # :

    Sendika için sadece ilk üyeyi başlatıyoruz, alanları değiştiriyoruz ve test başarılı olacak.
    Çoğu kullanıcının beklediği gibi olması için davranışı hız pahasına değiştirmeye değip değmeyeceğini düşünelim.

    Neyin değiştiğini düşünün - şimdi 1. üyenin sıfıra eşit olup olmadığını kontrol ediyorum x[i].i == 0 (önceden koşul x[i].x == 0.0 idi)

     union X {
         int i ;
         double x;
    };
    void OnStart ()
    {
        X x[ 10000 ] = {}; //(*)
         bool b = true ;
         for ( int i = 0 ; i < ArraySize (x) && (b = ( x[i].i == 0 )); i++ );
         Print ( b );
    }

    sonuç: yanlış

    Ve ZeroMemory ile - doğru

     
    Igor Makanu # :

    internette böyle bir makronun rahatlığı hakkında birçok bilgi var, google "makro iken 0"

    https://russianblogs.com/article/9410298326/

    Bütün yaygara sadece makronun sonuna noktalı virgül koymak için. Makrolarda her yerde kaşlı ayraç kullanıyorum ve herhangi bir sıkıntı bilmiyorum.

     
    A100 # :

    Neyin değiştiğini düşünün - şimdi 1. üyenin sıfıra eşit olup olmadığını kontrol ediyorum x[i].i == 0 (önceden koşul x[i].x == 0.0 idi)

    sonuç: yanlış

    Ve ZeroMemory ile - doğru

    Evet. mql hatası

    (ve C++'da true değerini döndürür).

     
    Şimdi (b3110) karmaşık bir yapı nasıl geçersiz kılınır?
     struct MqlTick2 : private MqlTick
    {
    //  string Str; // С этой строкой не обнулить.
    };
    
    
    template < typename T>
    void ZeroMemoryStruct( T &Struct )
    {
       uchar Bytes[ sizeof (T)];
      
      :: CharArrayToStruct (Struct, Bytes);
    }
    
    void OnStart ()
    {
      MqlTick2 Tick;
    
      ZeroMemoryStruct(Tick);  
    }