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

 
Nikolai Semko #:

нет, по ссылке хочет видеть только динамический

А без ссылки массив не передать

Не хочется создавать динамический дубликат большого массива только лишь для передачи в класс или функцию

Бред конечно

Дело имею с ресурсной переменной, поэтому никак не уйти от массива фиксированного размера.

Ну вот так получается:

struct SArrayStatic { long  array[2]; };
  
class CTest
  {
public:
                     CTest(SArrayStatic &data);
                    ~CTest(void);
  };
Хотя вон выше Алан пример привёл, что передаются любые массивы. В параметрах конструктора только указывается динамичекский, а передаются любые...
 
Здравствуйте 
У меня произошёл баг в приложении мт5 при открытии сделки AUDCHF точка открытия сделки меняется в файлах есть все докозательство 
Прошу помогите мне
 
Nikolai Semko #:
Подскажите пожалуйста, существует ли способ передать в конструктор массив фиксированного размера?
Nikolai Semko #:

нет, по ссылке хочет видеть только динамический

А без ссылки массив не передать

Не хочется создавать динамический дубликат большого массива только лишь для передачи в класс или функцию

Бред конечно

Дело имею с ресурсной переменной, поэтому никак не уйти от массива фиксированного размера.

Так он же вроде создаётся автоматически в любом случае. Из документации:

При явном указании всех значимых размерностей массива компилятор заранее распределяет необходимый размер памяти. Такой массив называется статическим. Тем не менее, компилятор дополнительно распределяет память под объект динамического массива, который (объект) связан с заранее распределенным статическим буфером (областью памяти для хранения массива).

Создание объекта динамического массива обусловлено возможной необходимостью передавать данный статический массив в качестве параметра в какую-либо функцию.

 
Alain Verleyen #:

В чем проблема ?

Спасибо большое Alain
я понял в чем проблема. 
Оказывается ресурсные переменные  имеют формат const

#resource "//Images//PNG.png" as uchar array2[]
class ACLASS
  {
public :
                     ACLASS(uchar &arr[])
     {
       bool isDynamic = ArrayIsDynamic (arr);
       printf ( "%s arr is %s" , __FUNCTION__ ,isDynamic ? "Dynamic" : "Static" );
     }
  };

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+---------
---------------------------------------------------------+
void OnStart ()
  {
   uchar const array1[5] = {1,2,3,4,5};
   printf ( "%s array1 is %s" , __FUNCTION__ , ArrayIsDynamic (array1) ? "Dynamic" : "Static" );
   ACLASS obj1(array1);
//---
   printf ( "%s array2 is %s" , __FUNCTION__ , ArrayIsDynamic (array2) ? "Dynamic" : "Static" );
   ACLASS obj2(array2);
  }


результат:

'PNG.png' as 'const uchar array2[226933]'       PNG.png 1       1
'array1' - constant variable cannot be passed as reference      TestPNG.mq5     30      16
   ACLASS::ACLASS(uchar&[])     TestPNG.mq5     16      22
'array2' - constant variable cannot be passed as reference      TestPNG.mq5     33      16
   ACLASS::ACLASS(uchar&[])     TestPNG.mq5     16      22

В этом случае действительно не получается передать массив как параметр.

Я просто хочу наконец сделать библиотеку работы с PNG файлами и опубликовать ее в CodeBase

 
Nikolai Semko #:

Спасибо большое Alain
я понял в чем проблема. 
Оказывается ресурсные переменные  имеют формат const


результат:

В этом случае действительно не получается передать массив как параметр.

Я просто хочу наконец сделать библиотеку работы с PNG файлами и опубликовать ее в CodeBase

Так работает:

struct SArrayStatic { const long  array[2]; };
  
class CTest
  {
public:
                     CTest(SArrayStatic &data);
                    ~CTest(void);
  };
 
Комментарии, не относящиеся к этой теме, были перенесены в "Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам".
 
Artyom Trishkin #:

Так работает:

Спасибо Артем!
А если не известен размер массива?
В моем случае ( ресурсная переменная из файла png) именно так

 
Nikolai Semko #:
Спасибо Артем!
А если не известен размер массива?
В моем случае ( ресурсная переменная из файла png) именно так

Через дефайн размер массива подставляется, но вот расчетный размер стат. массива не смог.
 
Nikolai Semko #:
Спасибо Артем!
А если не известен размер массива?
В моем случае ( ресурсная переменная из файла png) именно так

Хм... А как ты хочешь указать компилятору выделить заранее неизвестный объём памяти под массив?

Почему не использовать динамический? Отпали бы вот такие головоломки.