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

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

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

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

Сообщение wwswowsogon » 02.01.2011 00:19:31

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

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

Код: Выделить всё
if ... then
begin

end;
  else
   begin
   
   end;


компилятор не выдаёт сообщения об ошибке. Прекрасно компилируется, причём таким образом, что вторые скобки begin...end просто игнорируются. Может, надо в баг-трекер какой-нибудь это написать. Вобще, Lazrus 0.9.29 вроде довольно глючная вещь. Никогда бы не воспользовался нестабильной версией, но, к сожалению, под 28-й лазарус GLScene не ставится.
wwswowsogon
постоялец
 
Сообщения: 152
Зарегистрирован: 23.12.2008 20:41:37

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

Сообщение WindOfPain » 02.01.2011 00:28:26

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

Может какие дополнительные условия для воспроизведения бага есть?
Аватара пользователя
WindOfPain
новенький
 
Сообщения: 33
Зарегистрирован: 01.09.2009 21:18:23
Откуда: Санкт-Петербург

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

Сообщение Padre_Mortius » 02.01.2011 00:52:19

А выше по коду не закрытых if нет случайно? Если есть, то компилятор правильно себя ведет... Работа компилятора никак не связана с Lazarus)
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

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

Сообщение wwswowsogon » 02.01.2011 01:08:03

А выше по коду не закрытых 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)


Ну да) Просто не знаю, как назвать это безобразие)
wwswowsogon
постоялец
 
Сообщения: 152
Зарегистрирован: 23.12.2008 20:41:37

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

Сообщение Иван Шихалев » 02.01.2011 01:10:59

Все правильно. Благодаря точке с запятой, здесь 'else' относится к 'case', а не 'if'.
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

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

Сообщение wwswowsogon » 02.01.2011 01:22:28

Ой, да... Зря побеспокоил людей( Просто ни разу такого не видел, вроде, а проект мой глючит, вот и чудится всякая фигня
wwswowsogon
постоялец
 
Сообщения: 152
Зарегистрирован: 23.12.2008 20:41:37

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

Сообщение NXP » 02.01.2011 12:42:29

Бывает.
Последствия Нового Года :D
Аватара пользователя
NXP
постоялец
 
Сообщения: 187
Зарегистрирован: 02.01.2008 16:11:56
Откуда: Воронеж


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

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

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

Рейтинг@Mail.ru