LINUX.ORG.RU

free pascal - case & string


0

0

по документации ref.pdf в конструкциях case можно использовать константы, вроде как даже типа string, но в реальности компилятор это не пропускает:

get, str1, str2 : string;

case get[1] of
str1[1] : writeln('qqqq');
str2[1] : writeln('wwww');
end;


Что я делаю не так?
anonymous

а каким образом str1 и str2 - константы? это переменные (из этого куска); напиши const str1 : string = "blablabla"; str2 : string = "ololo";

generatorglukoff ★★
()

Ты используешь паскаКАЛЛ - это самое главое.

Переходи на VB/Gambas/...

anonymous
()
Ответ на: комментарий от anonymous

По умолчанию FreePascal работает в режиме совместимости с TurboPascal, в котором в операторе case ... of строковые константы были не допустимы. Попробуйте добавить в начало программы строчку {$MODE OBJFPC}

kss ★★★★★
()
Ответ на: комментарий от kss

Посмотрел сейчас ref.pdf и понял, что зря вам советовал. Строки и в режиме {$MODE OBJFPC} не могут быть в case:

>The constants appearing in the various case parts must be known at compile-time, and can be of the following types : enumeration types, Ordinal types (except boolean), and chars. The expression must be also of this type, or a compiler error will occur.

kss ★★★★★
()
Ответ на: комментарий от anonymous

Ну можно использовать TStringList или что-то подобное, чтобы вручную строки не сравнивать.

kss ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.