Создание переменной во время выполнения - страница 2

 
Evgeniy Scherbina:

Пример?

На "простой помол" будет примерно так:

double adDoubleArray[]; // Сюда будем складывать создаваемые дубли
CArrayObj aoObjArray;   // Сюда будем складывать указатели на создаваемые объекты

for(uint uiI=0; uiI<uiMaxVars; ++uiI)
{
   double dNevDblVar = MathRand();                             // Создаем переменную - значение на стеке
   ArrayResize(adDoubleArray,ArraySize(adDoubleArray)+1);      // Добавляем место, где будем ее хранить
   adDoubleArray[ArraySize[adDoubleArray]-1] = dNevDblVar;     // Записываем созданное значение
        
   CObject* poNewObject = new CObject;                         // Создаем переменную - объект в памяти
   aoObjArray.Add(poNewObject);                                // Добавляем место и размещаем объект в массиве объектов.         
};

В обоих случаях - нам даже не надо беспокоиться об удалении объектов, они будут автоматически удалены, для массива дублей - при выходе за пределы видимости массива, для массива указателей на объекты - в деструкторе.

Безусловно, по-хорошему - надо проверять получаемые величины, корректность выделения места под размещение, корректность создания, но большинство этим не заморачивается.

 
Georgiy Merts:

На "простой помол" будет примерно так:

В обоих случаях - нам даже не надо беспокоиться об удалении объектов, они будут автоматически удалены, для массива дублей - при выходе за пределы видимости массива, для массива указателей на объекты - в деструкторе.

Безусловно, по-хорошему - надо проверять получаемые величины, корректность выделения места под размещение, корректность создания, но большинство этим не заморачивается.

Вы создаете массив. Вы не объявляете переменную с любым именем, а создаете массив.

Я уже понял, что так, как мне нужно, нельзя сделать в mql5

 
Evgeniy Scherbina:

Вы создаете массив. Вы не объявляете переменную с любым именем, а создаете массив.

Я уже понял, что так, как мне нужно, нельзя сделать в mql5

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

Самый простой пример и способ решения вашей задачи -  библиотека Json.

Тупо создавайте "переменные",  а потом  работайте с примитивным объектом. Сам массив будет за кадром.

Хотя возможности применения абстракции объект значительно шире...

)

PS. А PHP мышление это еще результат  сидения в одной точке . От этого угол зрения не меняется.
Похоже, что все тот же indi-style. D)

PPS. Хотя для инициализации массивов через множественные input значения - вполне рабочее решение...
 
Evgeniy Scherbina:

Вы создаете массив. Вы не объявляете переменную с любым именем, а создаете массив.

Я уже понял, что так, как мне нужно, нельзя сделать в mql5

Можно посмотреть в сторону map контейнера, есть в стандартной библиотеке Generic.
map контейнер использует пару "ключ" : "значение"
Имя ключа может выступать как имя переменной, а значение содержать любой тип.
Но в данном случае нужно помнить, что у map есть временнАя сложность.

 
Сергей Таболин:

 На MQL - без бубна не получится, но!, если очень захотеть, то можно ))))))

Бубен не нужен. Достаточно использовать глобальные переменные терминала, их можно генерировать по имени. Это то, что нужно, но, мягко говоря, не очень эффективно.

 
учитывая наработки fxsaber   -  отличный трюк!
Причина обращения: