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

Andrey Khatimlianskii:

Из журнала.

Мда, тот еще костыль. Но вполне может быть рабочим. Спасибо.

Не хорошо, получаю ошибку:

void OnStart()
  {
   int my_num=4444;
   uchar uchar_array[];
   StructToCharArray(my_num,uchar_array,0);
  }
code generation error           1       1

Делать "костыль" для простой ситуации надо :( .

Aliaksandr Hryshyn:

Не хорошо, получаю ошибку:

Делать "костыль" для простой ситуации надо :( .

int ну никак не может быть структурой. Правильная ошибка.

Nikolai Semko:

int ну никак не может быть структурой. Правильная ошибка.

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

Aliaksandr Hryshyn:

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

TypeToBytes единообразно это делает.

Aliaksandr Hryshyn:

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

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

void OnStart()
  {
   struct Int {
   int i;};
   Int my_num={4444};
   uchar uchar_array[];
   StructToCharArray(my_num,uchar_array,0);
   for (int i=0;i<ArraySize(uchar_array);i++) printf("char[%d] = %d",i,uchar_array[i]);
  }

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

void OnStart()
  {
   union _int {
   int i;
   uchar c[sizeof(int)]; };
   _int _i;
   _i.i=4444;
   for (int i=0;i<sizeof(_int);i++) printf("char[%d] = %d",i,_i.c[i]);
  }

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

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

2020.03.31 12:58:11.353 Test_StructToCharArray (EURUSD,M10)     char[0] = 92 
2020.03.31 12:58:11.353 Test_StructToCharArray (EURUSD,M10)     char[1] = 17 
2020.03.31 12:58:11.353 Test_StructToCharArray (EURUSD,M10)     char[2] = 0
2020.03.31 12:58:11.353 Test_StructToCharArray (EURUSD,M10)     char[3] = 0
17*256+92=4444

Привет.

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

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)
.....