Оператор Case и символьные типы данных. Ошибка компиляции

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Оператор Case и символьные типы данных. Ошибка компиляции

Сообщение dilloYa » 31.01.2013 18:54:11

Столкнулась с такой непонятной для меня проблемой: компиляция кода в Windows-версии Lazarus, проходит успешно, компиляция ЭТОГО же кода в Linux-версии Lazarus обрывается на этом участке с ошибкой Ordinal expression expected в строке CASE, останавливаясь перед OF. Т.е. как я понимаю компилятору не нравятся типы перечисляемых данных. Но ведь это вполне себе допустимое использование, в чем может быть проблема? и почему в одном случае копиляция проходит, а в другом нет

Код: Выделить всё
                          case ArrNotePos[CountX,CountY] of
                            'F':
                              begin
                              NoteAlt:=ArrNotePos[CountX,CountY-1];
                              OktaveAlt:=ArrOktavePos[CountX,CountY];
                              end;
                            'A','B','D','E','G':
                              begin
                              NoteAlt:=ArrNotePos[CountX,CountY-2]+'#';
                              OktaveAlt:=ArrOktavePos[CountX,CountY];
                              end;
                            'C':
                              begin
                              NoteAlt:=ArrNotePos[CountX,CountY-1];
                              OktaveAlt:=ArrOktavePos[CountX,CountY-12];
                              end;
                          end;
Аватара пользователя
dilloYa
новенький
 
Сообщения: 15
Зарегистрирован: 21.01.2013 17:55:50

Re: Оператор Case и символьные типы данных. Ошибка компиляци

Сообщение v-t-l » 31.01.2013 19:46:02

Как объявлен ArrNotePos?
v-t-l
энтузиаст
 
Сообщения: 740
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Оператор Case и символьные типы данных. Ошибка компиляци

Сообщение dilloYa » 31.01.2013 22:12:54

v-t-l писал(а):Как объявлен ArrNotePos?
, спсибо v-t-l , ну тормоз :oops: , однако непонятно, почему в Windows компилируется и со стринг-типами, а в Linux только с чар? Это меня и сбило с пути поиска ошибки
Аватара пользователя
dilloYa
новенький
 
Сообщения: 15
Зарегистрирован: 21.01.2013 17:55:50

Re: Оператор Case и символьные типы данных. Ошибка компиляци

Сообщение Ask » 01.02.2013 02:56:22

Потому что под Windows, скорее всего, более новая версия компилятора
Ask
постоялец
 
Сообщения: 163
Зарегистрирован: 25.12.2008 03:51:37

Re: Оператор Case и символьные типы данных. Ошибка компиляци

Сообщение stikriz » 03.02.2013 13:35:02

v-t-l писал(а):Как объявлен ArrNotePos?

Не понятно, так как он объявлен?
В новой версии компилятора можно в case использовать не только перечислимые типы? В смылсе, даже строки из несколькоих байт?
Аватара пользователя
stikriz
энтузиаст
 
Сообщения: 612
Зарегистрирован: 15.03.2006 09:37:47

Re: Оператор Case и символьные типы данных. Ошибка компиляци

Сообщение Mr.Smart » 03.02.2013 22:51:12

stikriz писал(а):В новой версии компилятора можно в case использовать не только перечислимые типы? В смылсе, даже строки из несколькоих байт?

Найти не могу, но проскакивала информация, что в транковой версии можно.

Добавлено спустя 7 минут 39 секунд:
Re: Оператор Case и символьные типы данных. Ошибка компиляции
viewtopic.php?f=1&t=8217
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Оператор Case и символьные типы данных. Ошибка компиляци

Сообщение debi12345 » 04.02.2013 08:53:08

Оператор Case и символьные типы данных. Ошибка компиляции

А жаль - "else if.. else if.." там где напрашивается "case .. of" иногда напрягают.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Оператор Case и символьные типы данных. Ошибка компиляци

Сообщение SSerge » 04.02.2013 09:33:45

debi12345 писал(а):А жаль


Чего жаль? Что строки таки могут использоваться в case?
Сказано ж еще во втором посту, что под линуксом у автора темы старый компилятор. Там поди еще что нибудь типа 2.4.х, как в большинстве официальных репозиториев операционных систем.

Добавлено спустя 2 минуты 27 секунд:
Re: Оператор Case и символьные типы данных. Ошибка компиляции
Но :D я бы строки в case использовать не рекомендовал, ввиду совершенно невнятных ошибок логики, которые в результате можно заполучить. В первую очередь это относится к диапазонам типа 'ab'..'cd';
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Оператор Case и символьные типы данных. Ошибка компиляци

Сообщение debi12345 » 04.02.2013 09:52:08

ввиду совершенно невнятных ошибок логики, которые в результате можно заполучить.

И чем это оличается в худщую сторону от "many_times*(else if)" ? И там и там сравнение.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Оператор Case и символьные типы данных. Ошибка компиляци

Сообщение SSerge » 04.02.2013 10:00:01

а тем, что в if-ах сравнение выстраивает программист, а тут :mrgreen: - в определении диапазонов участвует компилятор. И не всегда его логика совпадает с логикой программиста.
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Оператор Case и символьные типы данных. Ошибка компиляци

Сообщение debi12345 » 04.02.2013 10:55:30

а тут - в определении диапазонов участвует компилятор

Конструкция "N1..Nn, M1..Mm" ? Просто можно помнить что для строковых констант диапазоны желательно не использовать. Лично меня длинные цепчки однородных "else if" бесят :)
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: Оператор Case и символьные типы данных. Ошибка компиляци

Сообщение stikriz » 04.02.2013 19:27:06

debi12345 писал(а):Лично меня длинные цепчки однородных "else if" бесят :)

Угу, прям кларион или 1С какой-то :-)
Аватара пользователя
stikriz
энтузиаст
 
Сообщения: 612
Зарегистрирован: 15.03.2006 09:37:47


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

Рейтинг@Mail.ru