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

 
Vladislav Andruschenko:

А... ясно...

Ну это не с обновлениями связано наверное. Надо разбирать, почему..... 

Ну работало же все больше 5 лет)) Код не менялся)

 
Aleksandr Prishenko:

Ну работало же все больше 5 лет)) Код не менялся)

Из этого совершенно не следует то что ошибки связаны с обновлениями платформы. У тебя выход за пределы массива.

 
Evgeny Potapov:

Здравствуйте!

Я хочу запустить несколько МТ4 пакетным файлом.

Подскажите, пожалуйста как это сделать и почему мой код не работает:

В лучшем случае запускается несколько МТ4, потом зависает.

Разумеется, недостатка в оперативке нет.

Кроме того, я пробовал на разных компах

А ключ портативного режима не требуется случайно?

Руками запускаются все терминалы? 

 
Alexey Viktorov:

Роман, вы второй раз попадаете на элементарном нежелании почитать документацию.

А в документации mql4, если мне память не совсем изменила было, чётко сказано о недопустимости применения переменных в качестве размера массива.

Не совсем то, но всё равно спасибо за цитирование доков.

 
Koldun Zloy:

Я не разработчик, но прокомментирую.

Для статического массива компилятор должен, уже при компиляции, выделить определённое количество байт в памяти.

Сколько памяти должен выделить компилятор, если row и col во время компиляции неизвестно?

Начальные значения используются только, если при вызове параметры опущены. Реальные параметры известны только во время выполнения.

Так что, никаких приколов, учите язык.

Вот, похоже на правду, спасибо, тоже была мысль на память.
Примерами из языка Си, я то как раз и руководствуюсь.

int N, M;
int i, j;
scanf("%d", &N);
scanf("%d", &M);

int A[N][M];
for (i = 0; i < N; i++) { 
   for (j = 0; j < M; j++) {
      A[i][j] = 10 + rand() % (20 - 10 + 1);
      printf("%d ", A[i][j]);
   }
}

puts("\n");

Но видимо современные компиляторы стали строже.
Проверил этот код в VS, тоже ругается на невыделенную память массива.
Видимо пример для других компиляторов, или устарел и это зависит от стандарта языка?

 

Сейчас в шапке страницы сайта mql5.com рядом с кнопкой профиля есть три значка:

1.Избранное

2. Лента

3. Сообщения

Просьба добавить ещё один значек, что то типа:

4. Деньги

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

 
Koldun Zloy:

Я не разработчик, но прокомментирую.

Для статического массива компилятор должен, уже при компиляции, выделить определённое количество байт в памяти.

Сколько памяти должен выделить компилятор, если row и col во время компиляции неизвестно?

Начальные значения используются только, если при вызове параметры опущены. Реальные параметры известны только во время выполнения.

Так что, никаких приколов, учите язык.

Рассуждения вслух, но скорее это обращение к разработчику.
По этому Zloy не принимайте на свой счёт.

Получается работа с динамическими матрицами возможна только через объекты или структуры. В общем очередной костыль получается.
Указателей на переменную в mql нет, остаётся использовать объектный подход, там указатели есть.
Получается чтобы использовать динамические матрицы, пользователю необходимо знать ООП и работу с указателями, да и ещё в исполнении MQL.
Многие такими знаниями владеют? Сами знаете ответ. Мне то разобраться с объектным подходом не составит труда, но для тех кто не владеет ООП
создаётся искусственный порог использования языка, в частности по работе с динамическим матрицами.
Как мне кажется, разработчик наоборот должен быть заинтересован в упрощении использования языка, а не его усложнение.
То есть разрабатывать такие функции, которые необходимы пользователю для удобной работы с языком.
А тем более с матрицами, чуть ли не основой численных методов.

По этому есть очевидная хотелочка, сделайте пожалуйста функции на подобие ArrayResize только для матриц ArrayResizeMx(A, n, m),
ну и для многомерных возможно. То есть дайте возможность работать с матрицами не как с объектами, а как с привычными массивами в стиле С.
Тем более для визуального отображения матриц, функция ArrayPrint(A, 0) печатает матрицу из массивов, а не из объекта.

 
Roman:

Еще в 2012 году проблема с динамическими многомерными массивами успешно решалась...
Вот соответствующая ветка: https://www.mql5.com/ru/forum/6729

Сейчас код можно доработать добавив поддержку шаблонов.

 
Sergey Dzyublik:

Еще в 2012 году проблема с динамическими многомерными массивами успешно решалась...
Вот соответствующая ветка: https://www.mql5.com/ru/forum/6729

Сейчас код можно доработать добавив поддержку шаблонов.

Прочитал всю тему, благо она коротенькая.
Так топик стартер, так и не раскрыл свой подвиг!
Какое то издевательство, затравил тему и исчез.
И это снова погружение в ООП, не посвященным вход воспрещен.
Юрий привел своё решение, на сколько оно верное, не кому не известно.
Которое нужно допиливать и допиливать. Кто это будет делать? правильно не кто, раз до сих пор не допилили колективом.

По этому нужны функции по работе с динамическими матрицами из коробки от разработчика.
Разработчик лучше знает тему, и выделение памяти без обёрток куда лучше смотрится и быстрее.
Да хотя бы одну функцию ArrayResizeMx(A, n, m, к), и то уже откроется возможность работать не с объектами, а с массивами в С стиле.

 
Roman:


И это снова погружение в ООП, не посвященным вход воспрещен.

Roman:


Получается чтобы использовать динамические матрицы, пользователю необходимо знать ООП и работу с указателями, да и ещё в исполнении MQL.
Многие такими знаниями владеют? Сами знаете ответ. Мне то разобраться с объектным подходом не составит труда, но для тех кто не владеет ООП
создаётся искусственный порог использования языка, в частности по работе с динамическим матрицами.
Как мне кажется, разработчик наоборот должен быть заинтересован в упрощении использования языка, а не его усложнение.

Возможно удивлю Вас, но современные молодые программисты считают ООП более легким программированием по сравнению с процедурным. 

Вы мыслите категориями 25-летней давности. Современная молодежь ООП впитывает уже с молоком матери. Учите ООП, если хотите быть в тренде, а иначе удел один - ворчание.