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

 
fxsaber :

Temel işlevler (gerekli değil)

  • StringToDouble
  • StringToInteger
  • StringToTime
  • StringToColor
  • StringAdd
  • DizeBirleştir
  • GetPointer


niye ya?
 
Konstantin :
niye ya?
Her şey uygun operatörler aracılığıyla yapılır.
 
fxsaber :
Her şey uygun operatörler aracılığıyla yapılır.

tam anlamadım örnek ver
 
Konstantin :

tam anlamadım örnek ver

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

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

fxsaber , 2017.04.26 15:16

Tüm standart tipler birbirine dökülür
 void OnStart ()
{
   string Str = "1.23qwedfg" ;
  
   Print (( int )Str);
   Print (( double )Str);
}

Sonuç

 1
1.23

 
fxsaber :



oh, neden bahsediyorsun)) evet, zaten varsa olsunlar)) aksi takdirde kaldıracaklar ve kod yapılarda olduğu gibi aniden çalışmayı bırakacak, tamam, en azından sendika tanıtıldı ve bir anlamda siz koltuk değneği ile geçebilir))
 
fxsaber :

Temel işlevler (gerekli değil)

  • GetPointer

Bu işlev çoğaltıldı mı?
 
Vasili Puşkaryev :
Bu işlev çoğaltıldı mı?
& Nesne
 

Yapı dökümü yerine birleşim kullanma

Build 1596'dan itibaren, farklı tipteki yapıların birbirine açıkça dökümü yasaktır. Daha eski yapılarda çalışan bu örnek artık derlenmeyecektir:

 struct struct_double
{
   double value ;
}sd;

struct struct_long
{
   ulong value ;
}sl;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
   sl = (struct_long)sd;
}
cannot cast 'struct_double' to 'struct_long'    CastingValues.mq5       33      9

Ancak artık MQL'de verileri bir birleşim yapısında birleştirmek mümkündür. Bu sayede birleşim yoluyla tip dökümü yapmak mümkündür:

union struct_union
{
   double d_value;
   ulong   l_value;
}su;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
{
   su.l_value = 0 ;
   su.d_value = 3.14159 ;
   printf (( string )su.l_value);
}
 2017.04 . 27 13 : 20 : 03.375 CastingValues (Si- 6.17 ,M1)       4614256650576692846

Bu yapı zaten yeni yapılarda mevcuttur.

ps Geliştiricilerin döküm bölümündeki belgeleri düzeltmeye başlamaları istenir: https://www.mql5.com/en/docs/basis/types/casting

 
Vasili Sokolov :

Yapı dökümü yerine birleşim kullanma

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Kitaplıklar: TypeToBytes

fxsaber , 2017.04.26 10:49

İsteğe bağlı yapıların dökümü mevcuttur
 struct STRUCT2
{
   MqlTick Tick;
};

// Кастинг произвольных простых структур
  STRUCT2 Struct2 = _C(STRUCT2, Tick);   // Аналог классического кастинга STRUCT2 Struct2 = (STRUCT2)Tick;
union, özel bir kurucu ve/veya kopyalama operatörü olan yapılar için döküme izin vermez.
 
fxsaber :
union, özel bir kurucu ve/veya kopyalama operatörü olan yapılar için döküme izin vermez.

Dökümün sendika tarafından tamamen değiştirilmesinden söz edilmedi.

ps Kodunuza baktım:

 class CASTING
  {
   public :
     template < typename T1>
     static const T Casting( const T1 &Value )
    {
   #ifdef TYPETOBYTES_FULL_SLOW
      T Data = { 0 };

       const int handle = :: FileOpen ( "Casting.tmp" , FILE_READ | FILE_WRITE | FILE_BIN );

       if (handle != INVALID_HANDLE )
      {
        :: FileWriteStruct (handle, Value);

        :: FileSeek (handle, 0 , SEEK_SET );
        :: FileReadStruct (handle, Data);

        :: FileClose (handle);
      }

       return (Data);
   #else // TYPETOBYTES_FULL_SLOW
      union CAST

Bir ikili dosya yazma/okuma yoluyla keyfi döküm... Işığı söndürün. Devamını okumanıza gerek yok...