это действительно нехорошо получилось с новым билдом
Я понимаю, что разработчики очень серьёзно относятся к языку, и постоянно ужесточают и т.д. Мы готовы с этим смириться, но объясните хотя бы при этом, какую опасность может вызывать копирование структуры оператором присвоения? При отказе снижается эффективность исполнения, и усложняется код.
Я понимаю, что разработчики очень серьёзно относятся к языку, и постоянно ужесточают и т.д. Мы готовы с этим смириться, но объясните хотя бы при этом, какую опасность может вызывать копирование структуры оператором присвоения? При отказе снижается эффективность исполнения, и усложняется код.
Очевидно что
ClassName object = initializer_list;
потенциально опасная вещь. Возможны разночтения и конфликты: 1) создать пустой объект и вызвать оператор = ; Если слоедовать строго по написанному пользователем, то так и должно быть. Но это 2 операции и чертовски долго 2) вызвать конструктор с параметрами initializer_list ; но у него семантика может отличаться от оператора =, и что там в контексте имелось в виду неясно 3) вызвать конструктор с единственным параметром &init_list 4) заполнить поля по init_list и вызвать конструктор и так далее и тому подобное, с вариациями const
PS/ но на мой вкус - лучше бы исключения сделали ;-)
2025.12.03 04:50:01.123 Git MQL5: create commit failed with -10 error, merge in progress prevented operation
У меня возникает эта ошибка при выполнении "Git Commit", и мне кажется, что изменения (возможно, весь файл) не сохраняются в Algo Forge.
К сожалению, сейчас используя только MetaEditor, устранит эту ошибку "правильным" образом нельзя. Но "неправильным" - можно.
Такое сообщение говорит о том, что перед коммитом в результате получения изменений из репозитория хранилища возникли конфликты слияния. Это значит, что в каком-то файле (или файлах) были внесены изменения и отправлены в репозиторий хранилища с одного локального репозитория, а затем в другом локальном репозитории были внесены изменения в эти же строки этих же файлов, но эти изменения - немного другие. Поэтому теперь в том другом локальном репозитории, где вы пытаетесь сделать коммит, git не смог решить, какие правки должны быть признаны правильными и оставлены в файлах, а какие - проигнорированы. Git в этом случае вводит локальный репозиторий в состояние слияния (merge in progress), из которого вы должны его сначала вывести, а только потом можно будет совершать новые коммиты.
Но в MetaEditor нет (пока?) инструментов, позволяющих выполнить эту операцию. Надо либо привлекать сторонние средства или использовать консольные команды git. Но даже с их помощью разруливание конфликтов слияния - малоприятная вещь.
Поэтому можно посоветовать сделать следующее:
закройте терминал и редактор.
создайте резервную копию папки данных MQL5 того терминала, где вы пытаетесь делать коммит. Это позволит вам не потерять совсем последние правки, которые вы пытались зафиксировать коммитом.
удалите папку данных MQL5 из каталога терминала (или того места, где терминал её расположил, если не используется portable-режим)
запустите сначала терминал (он воссоздаст папку MQL5), а затем редактор и подключите снова хранилище (если оно не подключится само)
выполните Git pull, чтобы восстановить состояние файлов в локальном репозитории до последней сохранённой в репозитории хранилища версии.
После этого у вас должен получиться локальный репозиторий в нормальном состоянии, позволяющий делать коммиты. Затем вы можете перенести из резервной копии файлы с последними правками в папку данных. Если они будут иметь отличия, то их уже должно получиться зафиксировать командой Git commit. Но нельзя копировать назад всю резервную копию папки MQL5, потому что в ней есть каталоги с именами ".git", в которых хранится вся информация локального репозитория. Если они перезапишут новые созданные папки ".git", то вы просто вернётесь к тому, с чего начали.
По идее всё должно сработать, но мне именно с такой ситуацией столкнуться не довелось.
Исправим.
До сих пор не исправили, увы.
Что вы творите с интерфейсом программы? Это просто треш. С каждой новой версией все хуже и хуже.
Что вы творите с интерфейсом программы? Это просто треш. С каждой новой версией все хуже и хуже.
Я ничего не заметил, кроме этого, но это действительно нехорошо получилось с новым билдом
это действительно нехорошо получилось с новым билдом
Я понимаю, что разработчики очень серьёзно относятся к языку, и постоянно ужесточают и т.д. Мы готовы с этим смириться, но объясните хотя бы при этом, какую опасность может вызывать копирование структуры оператором присвоения? При отказе снижается эффективность исполнения, и усложняется код.
Я понимаю, что разработчики очень серьёзно относятся к языку, и постоянно ужесточают и т.д. Мы готовы с этим смириться, но объясните хотя бы при этом, какую опасность может вызывать копирование структуры оператором присвоения? При отказе снижается эффективность исполнения, и усложняется код.
Очевидно что
ClassName object = initializer_list;
потенциально опасная вещь. Возможны разночтения и конфликты:
1) создать пустой объект и вызвать оператор = ; Если слоедовать строго по написанному пользователем, то так и должно быть. Но это 2 операции и чертовски долго
2) вызвать конструктор с параметрами initializer_list ; но у него семантика может отличаться от оператора =, и что там в контексте имелось в виду неясно
3) вызвать конструктор с единственным параметром &init_list
4) заполнить поля по init_list и вызвать конструктор
и так далее и тому подобное, с вариациями const
PS/ но на мой вкус - лучше бы исключения сделали ;-)
Всем привет!
У меня возникает эта ошибка при выполнении "Git Commit", и мне кажется, что изменения (возможно, весь файл) не сохраняются в Algo Forge.
Есть ли решение?
У меня возникает эта ошибка при выполнении "Git Commit", и мне кажется, что изменения (возможно, весь файл) не сохраняются в Algo Forge.
К сожалению, сейчас используя только MetaEditor, устранит эту ошибку "правильным" образом нельзя. Но "неправильным" - можно.
Такое сообщение говорит о том, что перед коммитом в результате получения изменений из репозитория хранилища возникли конфликты слияния. Это значит, что в каком-то файле (или файлах) были внесены изменения и отправлены в репозиторий хранилища с одного локального репозитория, а затем в другом локальном репозитории были внесены изменения в эти же строки этих же файлов, но эти изменения - немного другие. Поэтому теперь в том другом локальном репозитории, где вы пытаетесь сделать коммит, git не смог решить, какие правки должны быть признаны правильными и оставлены в файлах, а какие - проигнорированы. Git в этом случае вводит локальный репозиторий в состояние слияния (merge in progress), из которого вы должны его сначала вывести, а только потом можно будет совершать новые коммиты.
Но в MetaEditor нет (пока?) инструментов, позволяющих выполнить эту операцию. Надо либо привлекать сторонние средства или использовать консольные команды git. Но даже с их помощью разруливание конфликтов слияния - малоприятная вещь.
Поэтому можно посоветовать сделать следующее:
По идее всё должно сработать, но мне именно с такой ситуацией столкнуться не довелось.