|
|
|
E1012 Constant expression violates subrange bounds - разное поведение в разных версиях
|
|||
|---|---|---|---|
|
#18+
Приветствую. Вот такой код, в одном из модулей MFPack (MfPack.MfpUtils). Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. На последней строчке при компиляции вылетает [dcc32 Error] MfPack.MfpUtils.pas(882): E1012 Constant expression violates subrange bounds Это в Delphi XE3. В Delphi 10.3.1 CE ошибка не возникает. Кто-то знает или есть мысли, почему может быть так? И что нужно сделать, чтобы в XE3 ошибка не возникала? TColor в обеих версиях определен одинаково. Флажок в опциях компилятора Range Checking снят и там, и там (Но это, правда, как написано Runtime errors). Опция {R-} тоже есть в модуле. Я так понимаю/предполагаю, что cColor shl 24 видимо выходит за пределы integer, поэтому ошибка. Но почему это не дает ошибку в Delphi 10.3.1 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2019, 14:56 |
|
||
|
E1012 Constant expression violates subrange bounds - разное поведение в разных версиях
|
|||
|---|---|---|---|
|
#18+
Собственно, я эту функцию не использую, при создании формы вызывается функция Код: pascal 1. и всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2019, 14:59 |
|
||
|
E1012 Constant expression violates subrange bounds - разное поведение в разных версиях
|
|||
|---|---|---|---|
|
#18+
s62, Там ошибка в коде: shl -> shr ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2019, 15:09 |
|
||
|
E1012 Constant expression violates subrange bounds - разное поведение в разных версиях
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, да, я уже сам заметил. Исправил, но теперь в другом месте аналогичная ошибка. Код: pascal 1. вот тут. Интересно всё-таки, почему в новой Delphi компилируется без ошибок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2019, 15:16 |
|
||
|
E1012 Constant expression violates subrange bounds - разное поведение в разных версиях
|
|||
|---|---|---|---|
|
#18+
s62Интересно всё-таки, почему в новой Delphi компилируется без ошибок. Потому что это не ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2019, 15:20 |
|
||
|
E1012 Constant expression violates subrange bounds - разное поведение в разных версиях
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexeys62Интересно всё-таки, почему в новой Delphi компилируется без ошибок. Потому что это не ошибка.Переформулирую вопрос, почему в версии XE3 компиляция не происходит и выдается сообщение об ошибке (привел выше), а в версии 10.3.1 компилируется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2019, 15:24 |
|
||
|
E1012 Constant expression violates subrange bounds - разное поведение в разных версиях
|
|||
|---|---|---|---|
|
#18+
s62, Потому что ситуацию можно трактовать двояко. Более древний компилятор видит, что в результате сдвиговых операций гарантированно получается ноль, и предупреждает об этом (вероятно, считая, что ради нуля нет смысла городить огород). Более свежий компилятор стал более толерантным :), считает, что дебаггер не просто так в поставку входит и им нужно пользоваться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2019, 15:31 |
|
||
|
E1012 Constant expression violates subrange bounds - разное поведение в разных версиях
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexeys62, ... Более древний компилятор видит, что в результате сдвиговых операций гарантированно получается ноль, и предупреждает об этом (вероятно, считая, что ради нуля нет смысла городить огород). ...Не совсем так. Он сообщает, что dcc32[dcc32 Error] MfPack.MfpUtils.pas(911): E1012 Constant expression violates subrange boundsПримерно: константное выражение выходит за границы диапазона. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2019, 15:42 |
|
||
|
E1012 Constant expression violates subrange bounds - разное поведение в разных версиях
|
|||
|---|---|---|---|
|
#18+
s62, так в чем проблема то? Ну выдает XE3 ошибку, и что дальше? На момент реализации XE3 у разработчиков делфи было одно видение ситуации. К моменту выхода 10.3 видение у разработчиков делфи изменилось. Как писали выше, видение стало более толератным, соответственно компилятор реализовали в более расширенном режиме. Что делать с этим? А разве непонятно? либо переписать код для совместимости, либо перейти на 10.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2019, 16:31 |
|
||
|
E1012 Constant expression violates subrange bounds - разное поведение в разных версиях
|
|||
|---|---|---|---|
|
#18+
asutp2Что делать с этим? А разве непонятно? либо переписать код для совместимости, либо перейти на 10.3 Так хочется не переписывать, а галочку где-нибудь поставить, чтобы всё заработало сразу. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2019, 16:33 |
|
||
|
E1012 Constant expression violates subrange bounds - разное поведение в разных версиях
|
|||
|---|---|---|---|
|
#18+
asutp2так в чем проблема то? Ну выдает XE3 ошибку, и что дальше? На момент реализации XE3 у разработчиков делфи было одно видение ситуации. К моменту выхода 10.3 видение у разработчиков делфи изменилось. ... Вообще у разработчиков MFPack написано: Latest release: --------------------- MfPack Version X 2.6.1 Prodigy release. Delphi XE2 up to and including Delphi 10.3.1. Ну ладно, спасибо за комментарии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2019, 16:45 |
|
||
|
E1012 Constant expression violates subrange bounds - разное поведение в разных версиях
|
|||
|---|---|---|---|
|
#18+
s62Так хочется не переписывать, а галочку где-нибудь поставить, чтобы всё заработало сразу. :) Так он ругается на код, который всё равно переписывать нужно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2019, 17:01 |
|
||
|
E1012 Constant expression violates subrange bounds - разное поведение в разных версиях
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexeys62Так хочется не переписывать, а галочку где-нибудь поставить, чтобы всё заработало сразу. :) Так он ругается на код, который всё равно переписывать нужно...Не только. Я уже сделал, что компилируется в XE3. Пока добавляю код шаг за шагом вот в этом примере https://docs.microsoft.com/ru-ru/windows/win32/medfound/how-to-play-unprotected-media-files Хочу посмотреть, что такое вот это Media Foundation и м.б. сделать одну штуку с её помощью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2019, 17:10 |
|
||
|
E1012 Constant expression violates subrange bounds - разное поведение в разных версиях
|
|||
|---|---|---|---|
|
#18+
s62Не только. Оба приведённых примера переписывать нужно точно - там со сдвигами напутано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2019, 17:32 |
|
||
|
E1012 Constant expression violates subrange bounds - разное поведение в разных версиях
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexeys62Не только. Оба приведённых примера переписывать нужно точно - там со сдвигами напутано.Там еще было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2019, 17:34 |
|
||
|
E1012 Constant expression violates subrange bounds - разное поведение в разных версиях
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexeys62Не только. Оба приведённых примера переписывать нужно точно - там со сдвигами напутано.Да, там функция, где вторая ошибка, похоже неправильная. Вроде известный пакет, давно есть, странно даже, если такие ошибки. И на форуме у них на sourceforge тоже пока кажется никто не написал про это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2019, 17:37 |
|
||
|
E1012 Constant expression violates subrange bounds - разное поведение в разных версиях
|
|||
|---|---|---|---|
|
#18+
s62Там еще было Покажешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2019, 17:37 |
|
||
|
E1012 Constant expression violates subrange bounds - разное поведение в разных версиях
|
|||
|---|---|---|---|
|
#18+
s62, насчёт известный, это я спутал с DSPack. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2019, 17:39 |
|
||
|
E1012 Constant expression violates subrange bounds - разное поведение в разных версиях
|
|||
|---|---|---|---|
|
#18+
s62Примерно: константное выражение выходит за границы диапазона. Да, он видит какие-то приседания результат которых таки выходит за рамки допустимых значений. Трактовать можно и так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2019, 17:41 |
|
||
|
E1012 Constant expression violates subrange bounds - разное поведение в разных версиях
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexeys62Там еще было Покажешь?Лень. Я уже исправил, теперь искать, где это в коде было. Было три или 4 места в том файле. Если интересно, можешь сам скачать и посмотреть, как компилируется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2019, 17:42 |
|
||
|
E1012 Constant expression violates subrange bounds - разное поведение в разных версиях
|
|||
|---|---|---|---|
|
#18+
s62Лень. Я уже исправил, теперь искать, где это в коде было. Было три или 4 места в том файле. Тоже сдвиги? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2019, 17:57 |
|
||
|
E1012 Constant expression violates subrange bounds - разное поведение в разных версиях
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexeys62Там еще было Покажешь?Там 1 - ое где вместо shr - shl, потом два места, где автор по-моему неправильно преобразует RGB - сдвиги в обратном порядке. И одно место вот такое Код: pascal 1. Это хотя странно выглядит, но формально не ошибка, действительно будет 0. Это единственный известный мне перевод для Дельфи новых API для работы с мультимедиа и я уже пользовался им раньше, более старой версией. https://www.sql.ru/forum/1181782/otkuda-vzyat-zvukovoy-potok ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2019, 17:58 |
|
||
|
E1012 Constant expression violates subrange bounds - разное поведение в разных версиях
|
|||
|---|---|---|---|
|
#18+
Вообще, похоже, что дело в каких-то опциях проекта, надо посмотреть. Потому что в тестовом проекте в той же XE3 всё сдвигается без проблем и сообщений об ошибке. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Выводит: ABCD1234 CD123400 12340000 34000000 ABCD1234 ------------------ 34 0 0 0 34 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2019, 13:11 |
|
||
|
E1012 Constant expression violates subrange bounds - разное поведение в разных версиях
|
|||
|---|---|---|---|
|
#18+
Нет, если объявить переменную целого типа или типа TColor, то будет сообщение об ошибке, такое же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2019, 13:18 |
|
||
|
E1012 Constant expression violates subrange bounds - разное поведение в разных версиях
|
|||
|---|---|---|---|
|
#18+
Забросил всё это дело, на днях вернулся к нему и наткнулся на неожиданную ошибку (точнее - наткнулся давно, но как раз тогда и забросил). Вызываю IAudioClient.GetService, получаю access violation. Код: pascal 1. Есть старый чей-то интерфейсный файл к этому же модулю, с ним всё работает, разницы не вижу. Потом присмотрелся, увидел: Код: pascal 1. Второе, с const - работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2020, 16:42 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39854327&tid=2038615]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
145ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
81ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 515ms |

| 0 / 0 |
