Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2010, 12:42   #1
FanRa3
Пользователь
 
Регистрация: 04.11.2010
Сообщений: 92
По умолчанию Проблема с условием

Код:
if c+d = 2 then
begin
if Edit1.Text = Edit2.Text then
begin
Shape1.Brush.Color := RGB(0,255,0);
end
else
Shape1.Brush.Color := RGB(255,0,0);
Timer6.Enabled := true;
Timer6.Enabled := false;
Timer4.Enabled := true;
Timer1.Enabled := false;
Timer2.Enabled := false;
end;
end;
Почему компилятор при равенстве двух строк выполняет
Код:
else
Shape1.Brush.Color := RGB(255,0,0);
Timer6.Enabled := true;
Timer6.Enabled := false;
Timer4.Enabled := true;
Timer1.Enabled := false;
Timer2.Enabled := false;
и пропускает
Код:
Shape1.Brush.Color := RGB(255,0,0);
не могу понять, почему?
строки равные, а он выполняет условие при неравенстве

Последний раз редактировалось FanRa3; 04.11.2010 в 12:46.
FanRa3 вне форума Ответить с цитированием
Старый 04.11.2010, 12:49   #2
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

Код:
if Edit1.Text = Edit2.Text then
begin
Shape1.Brush.Color := RGB(0,255,0);
При равенстве двух строк выполняется только
Код:
Shape1.Brush.Color := RGB(0,255,0);
В другом случае выполняется только:
Код:
Shape1.Brush.Color := RGB(255,0,0);
с begin и end повнимательнее разберись.

А этовыполнится всегда, при условии c+d = 2
Код:
Timer6.Enabled := true;
Timer6.Enabled := false;
Timer4.Enabled := true;
Timer1.Enabled := false;
Timer2.Enabled := false;
Изо всей благодати
В руках крепко сжатых
Я донесу только капли

Последний раз редактировалось Roof; 04.11.2010 в 12:56.
Roof вне форума Ответить с цитированием
Старый 04.11.2010, 14:44   #3
Sanprof
Форумчанин
 
Аватар для Sanprof
 
Регистрация: 28.01.2008
Сообщений: 267
По умолчанию

вот можно так переписать ваш код и вам все станет понятно, почему, как и зачем.
Код:
if c+d = 2 then
begin
  if Edit1.Text = Edit2.Text then
    Shape1.Brush.Color := RGB(0,255,0)
  else
    Shape1.Brush.Color := RGB(255,0,0);

  Timer6.Enabled := true;
  Timer6.Enabled := false;
  Timer4.Enabled := true;
  Timer1.Enabled := false;
  Timer2.Enabled := false;
end;
//end;{<- а это лишний end}
ну а вобще я так понимаю вам надо это
Код:
if c+d = 2 then
begin
  if Edit1.Text = Edit2.Text then
    Shape1.Brush.Color := RGB(0,255,0)
  else
  begin
    Shape1.Brush.Color := RGB(255,0,0);
    Timer6.Enabled := true;
    Timer6.Enabled := false;
    Timer4.Enabled := true;
    Timer1.Enabled := false;
    Timer2.Enabled := false; 
  end;
end;{<- теперь это end не лишний}
P.S.
Умейте понятно и правильно писать код - это вам на будущее, сэкономите уйму времени
Не забываем говорить спасибо за помощь - это ведь так приятно

Последний раз редактировалось Sanprof; 04.11.2010 в 14:46.
Sanprof вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Непонятки с условием L3zh1Y Помощь студентам 4 11.06.2010 08:25
Запрос с условием ArtInt SQL, базы данных 2 05.05.2010 15:58
Ссумирование с условием Dendy702200 Microsoft Office Access 2 26.12.2009 17:33
Проблема с простейшим условием Kawun Помощь студентам 7 13.03.2009 18:23