Скачать MetaTrader 5

не копируется массив структур ArrayCopy

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Eugeny Kotovschikov
1961
Eugeny Kotovschikov  

не работает, имеем структуру:

struct SLine
  {
   long              numSignal;
   string            SymbolN;
   double            Profit;
   double            bid;
   double            price;
   int               type;
  };

SLine lines[], templines[];

Копируем

ArrayCopy(lines,templines,0,0,WHOLE_ARRAY)

 Результат 0, как так? в справки написано что цитирую "Массив структур можно скопировать только в массив того же самого типа.".

Vladimir Karputov
Модератор
73337
Vladimir Karputov  
Eugeny Kotovschikov:

не работает, имеем структуру:

Копируем

 Результат 0, как так? в справки написано что цитирую "Массив структур можно скопировать только в массив того же самого типа.".

ArrayCopy:

Массивы классов и структур, содержащих объекты, требующие инициализации, не копируются. Массив структур можно скопировать только в массив того же самого типа.

и далее, классов и структур:

Простые структуры

Структуры, которые не содержат строки, объекты класса и объекты динамических массивов, называются простыми структурами; переменные таких структур могут свободно копироваться друг в друга, даже если это разные структуры.

Убираем строки, увеличиваем размер массива до "1" (ведь до этого шага оба массива имеют размер "0"):

   struct SLine
     {
      long              numSignal;
      //string            SymbolN;
      double            Profit;
      double            bid;
      double            price;
      int               type;
     };

   SLine lines[],templines[];

   if(ArrayResize(templines,1)==-1)
      Print(GetLastError());

   int  result=ArrayCopy(lines,templines,0,0,WHOLE_ARRAY);
   int g=0;

получаем result равный 1.

Eugeny Kotovschikov
1961
Eugeny Kotovschikov  
Karputov Vladimir:

ArrayCopy:

и далее, классов и структур:

Убираем строки, увеличиваем размер массива до "1" (ведь до этого шага оба массива имеют размер "0"):

получаем result равный 1.

Понял, спасибо, перебрал циклом(((
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий