Компилятор не видит ";" перед "else"

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

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

Ответить
wwswowsogon
постоялец
Сообщения: 157
Зарегистрирован: 23.12.2008 19:41:37

Компилятор не видит ";" перед "else"

Сообщение wwswowsogon »

Не знаю, куда это надо написать, не бейте, пожалуйста. Lazarus 0.9.29, SVN 28842.

В конструкции

Код: Выделить всё

if ... then 
 begin
 
 end;
  else
   begin
   
   end;


компилятор не выдаёт сообщения об ошибке. Прекрасно компилируется, причём таким образом, что вторые скобки begin...end просто игнорируются. Может, надо в баг-трекер какой-нибудь это написать. Вобще, Lazrus 0.9.29 вроде довольно глючная вещь. Никогда бы не воспользовался нестабильной версией, но, к сожалению, под 28-й лазарус GLScene не ставится.
Аватара пользователя
WindOfPain
новенький
Сообщения: 33
Зарегистрирован: 01.09.2009 21:18:23
Откуда: Санкт-Петербург

Сообщение WindOfPain »

у меня на Lazarus-0.9.31-28853-fpc-2.4.3-20110101-win32.exe из
http://www.hu.freepascal.org/lazarus/
все нормально ругается на ";" под WinXP 32bit

Может какие дополнительные условия для воспроизведения бага есть?
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

А выше по коду не закрытых if нет случайно? Если есть, то компилятор правильно себя ведет... Работа компилятора никак не связана с Lazarus)
wwswowsogon
постоялец
Сообщения: 157
Зарегистрирован: 23.12.2008 19:41:37

Сообщение wwswowsogon »

А выше по коду не закрытых if нет случайно?


Вот весь код:

Код: Выделить всё


const

RESH_PAUSE=0;
RESH_GAME=1;

.........

var RESH: byte;

.........

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState
  );
begin
  case key of
   83: if RESH=RESH_PAUSE then
    begin
      RESH:=RESH_GAME;
      Timer1.Enabled:=true;
    end;
     else
       begin
         RESH:=RESH_PAUSE;
         Timer1.Enabled:=false;
       end;
  end;
end; 


Фиг знает, мож, всё нормально, может, роль второго if играет case key of... )

Работа компилятора никак не связана с Lazarus)


Ну да) Просто не знаю, как назвать это безобразие)
Аватара пользователя
Иван Шихалев
энтузиаст
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург
Контактная информация:

Сообщение Иван Шихалев »

Все правильно. Благодаря точке с запятой, здесь 'else' относится к 'case', а не 'if'.
wwswowsogon
постоялец
Сообщения: 157
Зарегистрирован: 23.12.2008 19:41:37

Сообщение wwswowsogon »

Ой, да... Зря побеспокоил людей( Просто ни разу такого не видел, вроде, а проект мой глючит, вот и чудится всякая фигня
Аватара пользователя
NXP
постоялец
Сообщения: 187
Зарегистрирован: 02.01.2008 15:11:56
Откуда: Воронеж
Контактная информация:

Сообщение NXP »

Бывает.
Последствия Нового Года :D
Ответить