Нужно протестировать некоторые вещи. Вот написал в скрипте типа такого:
Исполняю скрипт. Вижу такое:
Откуда там значения эти взялись на каждой итерации? Я же не принтовал, как я понимаю, адреса на места в памяти, а всего навсего значения объекта на заданном месте. Других вариантов не нашёл в иерархии. Тогда почему там не пусто? Интересно, что видна некоторая закономерность возрастания значений объектов.Очистку от мусора программист должен делать самостоятельно.
Очистку от мусора программист должен делать самостоятельно.
Что-то я ни в CArrayObj, ни в CObject не нашёл для этого методов. Циклом что-ли пробежаться и присвоить пустые значения?
Как-то так проапдейтить?
CArrayObj *array = new CArrayObj; Print("arraySize at initialize = ", array.Total()); // Добавили в массив 2 элемента for (int i = 0; i < 2; i++) array.Add(new CObject); Print("arraySize after adding elements = ", array.Total()); for (int i = 0; i < 2; i++) array.Update(i, NULL);
Хотя, не помогло. Странно, вроде как NULL передал, а на выходе всё-равно:
2018.04.26 13:44:18.863 testMethod (BTCUSD,M1) arraySize after updating value of elements = 131072 2018.04.26 13:44:18.863 testMethod (BTCUSD,M1) arraySize after updating value of elements = 196608
Нужно протестировать некоторые вещи. Вот написал в скрипте типа такого:
Исполняю скрипт. Вижу такое:
Откуда там значения эти взялись на каждой итерации? Я же не принтовал, как я понимаю, адреса на места в памяти, а всего навсего значения объекта на заданном месте. Других вариантов не нашёл в иерархии. Тогда почему там не пусто? Интересно, что видна некоторая закономерность возрастания значений объектов.По-моему, все верно.
Ты на каждой итерации берешь указатель на объект и выводишь на печать. Понятно, что в указателе - содержится какой-то идентификатор типа адреса - ты его и получаешь. Что не так ?
Во втором варианте - вобще безбашенные действия - ты наплодил объектов, присвоил их адреса указателям в массиве, а потом - эти указатели обнуляешь. А объекты кто удалять будет ? Они у тебя в памяти так и останутся ?
Что, собственно, должен делать скрипт ? Создавать кучу объектов, и заносить указатели на них в массив ? Это - есть, и, судя по всему, правильно исполняется. А что еще надо ?
По-моему, все верно.
Ты на каждой итерации берешь указатель на объект и выводишь на печать. Понятно, что в указателе - содержится какой-то идентификатор типа адреса - ты его и получаешь. Что не так ?
Во втором варианте - вобще безбашенные действия - ты наплодил объектов, присвоил их адреса указателям в массиве, а потом - эти указатели обнуляешь. А объекты кто удалять будет ? Они у тебя в памяти так и останутся ?
Что, собственно, должен делать скрипт ? Создавать кучу объектов, и заносить указатели на них в массив ? Это - есть, и, судя по всему, правильно исполняется. А что еще надо ?
По сути, я хочу понял, как здесь в массив объектов добавить массивы, в которые добавить потом любые данные. В той же Яве, есть типы Double, Integer и тд, и указателей нет т.к. они есть, но явно указывать не нужно.
Там объекту можно было присвоить значение грубо говоря любого примитива обёрнутого в "оболочку".
Как мне что-то присвоить объекту в мкл вообще? Например, строку или число любое. Я понимаю, что число это не объект, но есть в Яве такое типа new Integer(value). Это уже объект. Так иной раз проще работать на много и проверять какие-то вещи.
Когда есть полноценные объекты, это понятно. Но если нужно проверить какие-то функции из документации, то проще быстро создать объект и ему присвоить что-то, а после уже проверить, как влияет та или иная функция на массив объектов имеющийся. Но создавать объекты, заполнять их данными для того что бы проверить одну функцию как-то не вариант.
По сути, я хочу понял, как здесь в массив объектов добавить массивы, в которые добавить потом любые данные. В той же Яве, есть типы Double, Integer и тд, и указателей нет т.к. они есть, но явно указывать не нужно.
Там объекту можно было присвоить значение грубо говоря любого примитива обёрнутого в "оболочку".
Как мне что-то присвоить объекту в мкл вообще? Например, строку или число любое. Я понимаю, что число это не объект, но есть в Яве такое типа new Integer(value). Это уже объект. Так иной раз проще работать на много и проверять какие-то вещи.
Когда есть полноценные объекты, это понятно. Но если нужно проверить какие-то функции из документации, то проще быстро создать объект и ему присвоить что-то, а после уже проверить, как влияет та или иная функция на массив объектов имеющийся. Но создавать объекты, заполнять их данными для того что бы проверить одну функцию как-то не вариант.
Смотри.
СObject - это пустой объект, фактически, представляющий собой "неизвестный объект списка".
С указателями на такой объект умеет работать CArrayObj
Соответственно, тебе надо описать свой класс, пронаследованный от CObject.
В этом твоем объекте - должна быть описана функция заполнения. Можно перегрузить оператор присваивания и/или можно объявить конструктор копирования.
Далее, создаешь по new очередной экземпляр своего объекта, заполняешь его с помощью этой функции (или создаешь от другого объекта, если у тебя есть конструктор копирования), а указатель - передаешь в CArrayObj.
Далее - у тебя будет массив таких указателей. И когда тебе нужно будет один из этих объектов присвоить заново - ты возьмешь указатель на него, и у указателя - вызовешь функцию заполнения содержимого.
Очистку от мусора программист должен делать самостоятельно.
Это не мусор, это псевдоуказатели, которые уникальны для каждого *CObject. В C++ это были бы адреса памяти, в MQL4/5 дескрипторы, которые генерит рантайм.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Нужно протестировать некоторые вещи. Вот написал в скрипте типа такого:
Исполняю скрипт. Вижу такое:
Откуда там значения эти взялись на каждой итерации? Я же не принтовал, как я понимаю, адреса на места в памяти, а всего навсего значения объекта на заданном месте. Других вариантов не нашёл в иерархии. Тогда почему там не пусто? Интересно, что видна некоторая закономерность возрастания значений объектов.