![]() |
![]() |
volvo |
![]()
Сообщение
#1
|
Гость ![]() |
Привет всем.
Сегодня наткнулся на непонятное (с точки зрения Паскаля) поведение FPC. Вот такой простейший код, совершенно корректно отрабатывающий в Турбо Паскале: type Попробуйте без его компиляции и запуска определить, что будет выведено на печать. А потом запустите на выполнение... ![]() Так что осторожнее с множествами... |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Ну вот, и я думал, что 7...
Однако, на самом деле происходит очень неприятная штука (FPC 2.4.0, Debug/Normal mode, любой из режимов совместимости TP/ObjFPC/Delphi/FPC):
15 строка - это if s[i] in myset then inc(count); Как только очередной символ строки не входит во множество допустимых значений для myset - программа завершается аварийно при попытке проверить In. В багтрекере есть одна ошибка, связанная с множествами (она уже исправлена, в 2.5.1). Но этой нет. Вот я и думаю, это ж баг? Так быть не должно - не присутствует значение во множестве, значит надо вернуть False и все. |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 14:20 |