![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Кратко.
Функции системных библиотек для x86 (32 бита) процессов имеют специальную обёртку, через которую они переходят в x64, выполняются и возвращаются обратно в x86.
если не кратко, то в МТ5 стал остро вопрос про 32/64 бита.
вопрос очень важный и как раз пришло время его решать.
или папку libraries64 добавить, чтоб терминал сам понимал откуда брать либы
или же дать каким-то образом раскидывать DLL по виндовым папкам System32/SysWow64
или таки дать #ifdef
https://www.mql5.com/ru/forum/6729#comment_199764
ЗЫ.
заявка в СД #381730
Массив произвольной размерности (для определённости ограничим, скажем, до ^16).
Размерность задаётся при создании количеством параметров, как для обычных массивов.
XXArray xx2(5,7), xx5(12,12,16,16,8);
Должны для всех размерностей работать индексаторы ( A[i][j][k][n][m]....)
Ну раз сообщество молчит, тогда продолжу ...
Набросок класса N-мерного (double) массива и тест для его проверки.
Размерность описывается (int) массивом в конструкторе.
Второй вариант N-мерного (double) массива. Структура массива также задается в конструкторе другим (int) массивом.
Этот вариант немного быстрее предыдущего. И в этом варианте легче создать операции с подмассивами.
Второй вариант N-мерного (double) массива. Структура массива также задается в конструкторе другим (int) массивом.
Этот вариант немного быстрее предыдущего. И в этом варианте легче создать операции с подмассивами.
Юрич, ты крут. Я тут немного отвлёкся от форума на несколько дней, так ты уже пару вариантов нафигачил.
Тэкс. По первому впечатлению - первый вариант чреват глюками при ошибочном вызове с меньшим числом индексов : т.е. например double x=A[i][j][k]; "трёхмерный вызов" для четырёхмерного массива вернёт double как ни в чём не бывало, но при этом совсем из той позиции массива из которой юзер мечтал. Причём отследить и обработать такого рода ошибки не видно каким способом. Зато неоспоримым преимуществом первой реализации является экономность по памяти. Второй вариант намноого расточительнее. Зато, как ты верно заметил, в нём можно попробовать достучаться до подмассивов и все трудности на этом путю вполне победимы.
Нужно что-то третье думать. У меня есть идеи, но доберусь до свободного времени только к ночи ближе, если вообще сегодня доберусь. Но мы тему добьём, обещаю. :)
--
Основная мысля: нужно использовать ещё один класс, что-то вроде "контроллера левых индексов", а крайний правый индекс обрабатывать основным классом (если получится. если нет, то ещё один класс для правого индекса). При этом базовый массив double (одномерный и единственный) сделать членом основного класса CNArray. Как-то так.
Тэкс. По первому впечатлению - первый вариант чреват глюками при ошибочном вызове с меньшим числом индексов : т.е. например double x=A[i][j][k]; "трёхмерный вызов" для четырёхмерного массива вернёт double как ни в чём не бывало, но при этом совсем из той позиции массива из которой юзер мечтал. Причём отследить и обработать такого рода ошибки не видно каким способом.
покрутил первый способ от Юрича, вроде бы можно ранг массива контролировать так:
Задача:
- передать из эксперта в индикатор массив чисел.
Условия.
для передачи данных не использовать
- чартовые события,
- файлы,
- глобальные переменные (они же файлы),
- dll
Задача:
- передать из эксперта в индикатор массив чисел.
Условия.
- не использовать чартовые события, файлы, dll для передачи данных
Тогда остаются поименованные каналы.
Задача:
- передать из эксперта в индикатор массив чисел.
Условия.
для передачи данных не использовать
- чартовые события,
- файлы,
- глобальные переменные (они же файлы),
- dll
Ну никого на подвиги не раскрутить :)
Тогда предложу еще один вариант - использовать сабчарт и функции ChartSetString()и ChartGetString().