Hatalar, hatalar, sorular - sayfa 2690

 

Merhaba.

Ne yanlış olabilir? Bir göstergenin iki kopyasını grafiğe koyuyorum, ilk göstergede çizgilerin rengini değiştiriyorum, ikincide çizgilerin rengi de değişiyor ama ikincisinde hiçbir şeyi değiştirmiyorum. Global değişkenler yoktur.

 
Nikolai Semko :

Bunda bir mantık göremiyorum.
basit türler için önce şunu yapabilirsiniz:

ikincisi, şöyle:

ve hepsi koltuk değneği değil

her iki durumda da sonuç:

17*256+92=4444

Mantık, bir fonksiyon içindeki yapılar için bir diziye veri yazmak mümkünse, o zaman basit tipler için de böyle olmalıdır.

Tamam, buradaki durum oldukça basit.

 
Aliaksandr Hryshyn :

Mantık, bir fonksiyon içindeki yapılar için bir diziye veri yazmak mümkünse, o zaman basit tipler için de böyle olmalıdır.

Ben de bu mantığı sizin fikriniz dışında bir şeyle teyit etmek isterim.

ilgileniyorsanız, google "C# yapıdan bayt dizisine"

C# dilinin tüm uygulamalı programcı olmayanlar için Microsoft'un beyni olduğunu ve MQL'de C#'da birkaç satırda yapılanların aslında basitçe sağlanmadığını unutmayın - googled örneklerinde, her şey Marshal aracılığıyla yapılır, ve bu yönetilmeyen kodla çalışmaktır, yani . bu .Net'in dışında - MQL terimleriyle - "bu bir .dll çağrısıdır"


işte mantıkla ilgili bir şey...

 
Igor Makanu :

Ben de bu mantığı sizin fikriniz dışında bir şeyle teyit etmek isterim.

ilgileniyorsanız, google "C# yapıdan bayt dizisine"

C# dilinin tüm uygulamalı programcı olmayanlar için Microsoft'un beyni olduğunu ve MQL'de C#'da birkaç satırda yapılanların aslında basitçe sağlanmadığını unutmayın - googled örneklerinde, her şey Marshal aracılığıyla yapılır, ve bu yönetilmeyen kodla çalışmaktır, yani . bu .Net'in dışında - MQL terimleriyle - "bu bir .dll çağrısıdır"


işte mantıkla ilgili bir şey...

Bu var:

BinaryWriter.Write Method

Çok sayıda aşırı yüklenmiş yöntem:

Write(UInt64)   
Write(UInt32)   
Write(UInt16)
.....
 
Aliaksandr Hryshyn :

Bu var:

Çok sayıda aşırı yüklenmiş yöntem:

https://metanit.com/sharp/tutorial/5.6.php

bu, FILE_BIN bayrağıyla MQL'deki dosyalarla çalışmanın bir analogudur.

yanılmıyorsam, o zaman dosyalarla çalışmak istemediniz, ancak basit bir veri türünü bir bayt dizisine seri hale getirin

 
Igor Makanu :

https://metanit.com/sharp/tutorial/5.6.php

bu, FILE_BIN bayrağıyla MQL'deki dosyalarla çalışmanın bir analogudur.

yanılmıyorsam, o zaman dosyalarla çalışmak istemediniz, ancak basit bir veri türünü bir bayt dizisine seri hale getirin

dosya akışı

MemoryStream

Ve dosyalar ve hafıza.

Neden C#'dan bu kadar nefret ediyorsunuz :)?
 
Aliaksandr Hryshyn :

dosya akışı

MemoryStream

Ve dosyalar ve hafıza.

Neden C#'dan bu kadar nefret ediyorsunuz :)?

ortaya çıkardığın hoşlanmama hakkında, dilin programcı olmayanlar için olduğunu yazdım, bu da çok kullanıcı dostu, spesifik olmak için

dosya akışları hakkında, basit bir görevi tamamen karmaşık hale getirdiğiniz bir şey

Size itirazımın özü, "ham veri" ile çalışma açısından MQL'nin çok gelişmiş bir dil olmasıdır, bir örnek daha - MQL'de varsayılan olarak yapıların hizalanması yoktur, bu kullanıcı için uygundur

 
Igor Makanu :

ortaya çıkardığın hoşlanmama hakkında, dilin programcı olmayanlar için olduğunu yazdım, bu da çok kullanıcı dostu, spesifik olmak için

dosya akışları hakkında, basit bir görevi tamamen karmaşık hale getirdiğiniz bir şey

Size itirazımın özü, "ham veri" ile çalışma açısından MQL'nin çok gelişmiş bir dil olmasıdır, bir örnek daha - MQL'de varsayılan olarak yapıların hizalanması yoktur, bu kullanıcı için uygundur

Yalnızca RAM'de dosya akışının bir analogu vardır.
 
Aliaksandr Hryshyn :
Yalnızca RAM'de dosya akışının bir analogu vardır.

niye ya? çoğunlukla, basit türler şu şekilde baytlara çevrilebilir:

 void OnStart ()
{
   int i_value = 123456 ;
   uchar arr_byte[ 4 ];
   arr_byte[ 0 ] = ( uchar )(i_value & 0x000000FF );
   arr_byte[ 1 ] = ( uchar )((i_value & 0x0000FF00 ) >> 8 );
   arr_byte[ 2 ] = ( uchar )((i_value & 0x00FF0000 ) >> 16 );
   arr_byte[ 3 ] = ( uchar )((i_value & 0xFF000000 ) >> 32 );
   ArrayPrint (arr_byte);

// проверим собрав обратно из байт int

   union _int
   {
       int i;
       uchar c[ sizeof ( int )];
   } ui;
   ArrayCopy (ui.c, arr_byte);
   Print (ui.i);
}

bu tür kodlar (ilk kısım) birebir çalışmalı ve C# ile çalışmalı, en azından tamsayı türlerinde hiç sorun olmadı, zaten 3 numaralı seçenek gibi görünüyor

kodumu bir döngüye sarabilirsin, biraz daha kompakt olacak

UPD:

 namespace ConsoleApp1
{
     class Program
    {
         static void Main( string [] args)
        {
             int i_value = 123456 ;
             uint mask = 0x000000FF ;
             byte [] arr_byte = new byte [ 4 ];
             for ( int i= 0 ; i< 4 ; i++)
            {
                arr_byte[i] = ( byte )((i_value & mask) >> i* 8 );
                mask <<= 8 ;
                Console.WriteLine(arr_byte[i]);
            }
            Console.ReadLine();
        }
    }
}
 
Igor Makanu :

C# dilinin tüm uygulamalı programcı olmayanlar için Microsoft'un buluşu olduğunu ve MQL'de C#'da birkaç satırda yapılanların aslında basitçe sağlanmadığını unutmayın.

Sen nesin! Ve "yetersiz programcılar" nedense bunun "sağlanmadığını" bilmiyorlar.
Dosyalar: