Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 25.09.2012, 22:29   #1
Emperator12
Пользователь
 
Регистрация: 19.09.2012
Сообщений: 13
Репутация: 10
По умолчанию конструкция if else

Код:
if checkbox1.Checked = true then begin
work:= true;
doChek1(log,pass, work, forum1);
end else if checkbox1.Checked = false then  begin
work:= false;
doChek1(log,pass, work, forum1);
Код:
if work = true and checkbox5.checked = false then begin
   showmessage('Записать в файл без тегов');
   end else if work = true and checkbox5.checked = true then begin
   showmessage('Записать в файл с тегами');
   end else if work = false and checkbox5.checked  = false then begin
   showmessage('Ничего не делать');
   end;
ДАЖЕ Когда оба чек боксы не отмечены, пишет, что мол записать в файл с тегами. Почему ? где ошибка ?
Emperator12 вне форума   Ответить с цитированием
Старый 25.09.2012, 22:51   #2
BDA
Модератор
Заслуженный модератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Адрес: RF Moscow
Сообщений: 5,408
Репутация: 2502

icq: 438888048
По умолчанию

Попробуйте расставить скобки в логических выражениях, по-моему "and" старше "=".
(Профит http://informatics.mccme.ru/moodle/m...&chapterid=255)
__________________
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 25.09.2012 в 22:53.
BDA вне форума   Ответить с цитированием
Старый 25.09.2012, 23:04   #3
Emperator12
Пользователь
 
Регистрация: 19.09.2012
Сообщений: 13
Репутация: 10
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Попробуйте расставить скобки в логических выражениях, по-моему "and" старше "=".
(Профит http://informatics.mccme.ru/moodle/m...&chapterid=255)
Чтоо ? "=" - оператор присвоения. "and" - логический оператор.
Как "and" может быть старше "=" ?
Emperator12 вне форума   Ответить с цитированием
Старый 25.09.2012, 23:05   #4
Emperator12
Пользователь
 
Регистрация: 19.09.2012
Сообщений: 13
Репутация: 10
По умолчанию

Скобки ( ) помогли, кстати.
Emperator12 вне форума   Ответить с цитированием
Старый 25.09.2012, 23:07   #5
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
Репутация: 72

icq: 1414351
По умолчанию

Причем тут присвоение.
= - это операция отношения
И как видно по ссылке, операция and имеет приоритет перед =, а значит и выполняется сначала and
Voody вне форума   Ответить с цитированием
Старый 25.09.2012, 23:08   #6
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 25,871
Репутация: 5617
По умолчанию

надо логические выражения обязательно брать в скобки
вот так:
Код:
if (work = true) and (checkbox5.checked = false) then begin
   end else if (work = true) and (checkbox5.checked = true) then begin
   showmessage('Записать в файл с тегами');
   end else if (work = false) and (checkbox5.checked  = false) then begin ...
в данном случае вы имеет дело с логическими переменными, поэтому можно записывать прямо так:
Код:
if work and Not checkbox5.checked then begin
   showmessage('Записать в файл без тегов');
   end 
   else if work and checkbox5.checked then begin
   showmessage('Записать в файл с тегами');
   end 
   else if Not work and Not checkbox5.checked then begin
   showmessage('Ничего не делать');
   end;

ну и ещё. обратите внимание, что, очевидно, один из вариантов в вашем примере вообще не обрабатывается (это когда work - false и checked - true)
Serge_Bliznykov на форуме   Ответить с цитированием
Старый 25.09.2012, 23:18   #7
Emperator12
Пользователь
 
Регистрация: 19.09.2012
Сообщений: 13
Репутация: 10
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение


ну и ещё. обратите внимание, что, очевидно, один из вариантов в вашем примере вообще не обрабатывается (это когда work - false и checked - true)
Такого варианта у меня не может быть. Ну то есть если work - false и checked - true, тогда ничего не нужно делать.
Всем спасибо.
Emperator12 вне форума   Ответить с цитированием
Старый 26.09.2012, 08:19   #8
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 25,871
Репутация: 5617
По умолчанию

Цитата:
Ну то есть если work - false и checked - true, тогда ничего не нужно делать.
ну, судя по этому коду:
Цитата:
Код:
if Not work and Not checkbox5.checked then begin
   showmessage('Ничего не делать');
в случае, когда work - false и checked - false - тоже ничего не надо делать!
поэтому Ваш код легко вырождается в такой:
Код:
if work then begin
   if checkbox5.checked then
     showmessage('Записать в файл с тегами')
   else
     showmessage('Записать в файл без тегов');
end
else
    showmessage('Ничего не делать');
это и проще, и нагляднее и надёжнее. Рекомендую!
Serge_Bliznykov на форуме   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
конструкция if else Emperator12 Общие вопросы Delphi 2 23.09.2012 11:36
Конструкция из if else в Delphi freeeeez Помощь студентам 4 03.02.2011 02:10
Конструкция if GBAXA Общие вопросы Delphi 5 04.08.2010 15:12
Конструкция try..except anGeee Общие вопросы Delphi 2 21.05.2009 11:34
Конструкция файла SunKnight Общие вопросы Delphi 4 23.04.2008 08:26


10:16.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.