Ошибки, баги, вопросы - страница 2690

 

Привет.

В чем может быть ошибка? Размещаю на графике две копии одного индикатора, меняю цвет линий в первом индикаторе, цвет линий также меняется во втором, но я во втором ничего не меняю. Глобальных переменных нет.

 
Nikolai Semko:

не вижу логичности в этом.
для простых типов, во-первых, можно сделать так:

во- вторых, так:

и это всё не костыли

результат в обоих случаях:

17*256+92=4444

Логичность в том, что если для структур в пределах одной функции можно в массив данные записать, то и для простых типов так должно быть.

Ладно, ситуация тут совсем простая.

 
Aliaksandr Hryshyn:

Логичность в том, что если для структур в пределах одной функции можно в массив данные записать, то и для простых типов так должно быть.

еще бы подтвердить эту логичность чем-нибудь кроме Вашего мнения

если интересно то гугл " C# struct to byte array " 

заметьте, что язык C# это детище Майрософт для всех прикладных недопрограммеров, и то что в MQL делается в пару строк в C# , по сути, просто не предусмотрено - в нагугленных примерах все делается через Marshal, а это работа с неуправляемым кодом, т.е. это за пределами .Net - в терминах MQL - "это вызов .dll"


вот так как то про логичность...

 
Igor Makanu:

еще бы подтвердить эту логичность чем-нибудь кроме Вашего мнения

если интересно то гугл " C# struct to byte array " 

заметьте, что язык C# это детище Майрософт для всех прикладных недопрограммеров, и то что в MQL делается в пару строк в C# , по сути, просто не предусмотрено - в нагугленных примерах все делается через Marshal, а это работа с неуправляемым кодом, т.е. это за пределами .Net - в терминах MQL - "это вызов .dll"


вот так как то про логичность...

Там есть такое:

BinaryWriter.Write Method

Много перегруженных методов:

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

Там есть такое:

Много перегруженных методов:

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

это аналог работы с файлами в MQL с флагом FILE_BIN 

если не ошибаюсь, то Вы же не с файлами работать хотели, а просто сериализовать простой тип данных в байтовый массив

 
Igor Makanu:

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

это аналог работы с файлами в MQL с флагом FILE_BIN 

если не ошибаюсь, то Вы же не с файлами работать хотели, а просто сериализовать простой тип данных в байтовый массив

FileStream

MemoryStream

И файлы и память.

Почему у вас такая неприязнь к C# :)?
 
Aliaksandr Hryshyn:

FileStream

MemoryStream

И файлы и память.

Почему у вас такая неприязнь к C# :)?

про неприязнь Вы придумали,я лишь написал, что язык для непрограммистов, что соответствует очень доброжелательный к пользователю, если быть конкретным 

про файловые потоки, что то Вы совсем усложнили простую задачу

суть моего обращения к Вам, что в части работы с "сырыми данными" MQL очень продвинутый язык, еще один пример - в MQL выравнивание структур по умолчанию отсутствует, это удобно для пользователя

 
Igor Makanu:

про неприязнь Вы придумали,я лишь написал, что язык для непрограммистов, что соответствует очень доброжелательный к пользователю, если быть конкретным 

про файловые потоки, что то Вы совсем усложнили простую задачу

суть моего обращения к Вам, что в части работы с "сырыми данными" MQL очень продвинутый язык, еще один пример - в MQL выравнивание структур по умолчанию отсутствует, это удобно для пользователя

Там есть аналог файлового потока только в оперативке.
 
Aliaksandr Hryshyn:
Там есть аналог файлового потока только в оперативке.

зачем? в большинстве своем простые типы в байты примерно так можно перевести:

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);
}

такой код (первая часть) должен один в один и в C# работать, по крайней мере с целыми типами вообще проблем никогда не было, это кажется вариант № 3 уже

можно в цикл обернуть мой код, чуть компактнее будет 

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# это детище Майрософт для всех прикладных недопрограммеров, и то что в MQL делается в пару строк в C# , по сути, просто не предусмотрено 

Да вы что! А "недопрограммеры" почему то не знают что это "не предусмотрено".
Файлы:
Причина обращения: