IPB
ЛогинПароль:

> 

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Работа со множествами, FPC, Будьте аккуратнее :)
сообщение
Сообщение #1


Гость






Привет всем.

Сегодня наткнулся на непонятное (с точки зрения Паскаля) поведение FPC. Вот такой простейший код, совершенно корректно отрабатывающий в Турбо Паскале:

type
tset = set of 'a' .. 'z';
const
myset: tset = ['a' .. 'z'];
s: string = 'the test';
count: integer = 0;
var
i: integer;

begin
for i := 1 to length(s) do
begin
if s[ i ] in myset then inc(count);
end;
writeln(count);
end.

Попробуйте без его компиляции и запуска определить, что будет выведено на печать. А потом запустите на выполнение... smile.gif

Так что осторожнее с множествами...
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Ну вот, и я думал, что 7...

Однако, на самом деле происходит очень неприятная штука (FPC 2.4.0, Debug/Normal mode, любой из режимов совместимости TP/ObjFPC/Delphi/FPC):


Running "f:\programs\pascal\tst.exe "
No heap dump by heaptrc unit
Exitcode = 201
Runtime error 201 at $00401481
$00401481 main, line 15 of F:/Programs/Pascal/tst.pp
$004083C1



15 строка - это
if s[i] in myset then inc(count);


Как только очередной символ строки не входит во множество допустимых значений для myset - программа завершается аварийно при попытке проверить In. В багтрекере есть одна ошибка, связанная с множествами (она уже исправлена, в 2.5.1). Но этой нет. Вот я и думаю, это ж баг? Так быть не должно - не присутствует значение во множестве, значит надо вернуть False и все.
 К началу страницы 
+ Ответить 

Сообщений в этой теме
volvo   Работа со множествами, FPC   6.11.2010 2:51
TarasBer   Должно быть 7 же, а в ФПЦ чё за прикол происходит?   6.11.2010 3:02
Archon   FreePascal 2.4.0. Предсказуемо, 7.   6.11.2010 3:17
volvo   Ну вот, и я думал, что 7... Однако, на самом дел…   6.11.2010 3:20
Lapp   Вот я и думаю, это ж баг? Так быть не должно - не …   6.11.2010 6:45
volvo   , и надо выбрасывать критическую ошибку, да? В топ…   6.11.2010 6:59
Lapp   И еще одно - что мне совершенно непонятно. Откомпи…   6.11.2010 7:04
Lapp   Я еще подумаю над этим..Я подумал, как и обещал. …   6.11.2010 12:26
Archon   Delphi не ругается ни при выключенном RangeCheck, …   6.11.2010 14:53
Lapp   При операциях с числами аргументы приводятся к бол…   7.11.2010 9:31
Client   ошибка всегда, если Range Checking включен, во все…   6.11.2010 15:25
volvo   Я не отмалчиваюсь, я просто сейчас сидел и разбира…   7.11.2010 18:20
Lapp   Если так все-таки было задумано, то чего бы не сде…   8.11.2010 8:12
volvo   Нет еще... Сегодня вечером запощу.   8.11.2010 17:28


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.04.2024 4:35
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name