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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2007, 13:44   #1
AND
 
Регистрация: 05.11.2007
Сообщений: 8
По умолчанию Почему выполняется ложное условие?

Доброго время суток.
В программе есть условие, которое вначале ложно. При нажатии на кнопку старт задаются переменные, где
tpostzad := 5 + random(5);
Vremy- это переменная характерезующая внутреннее время, при вызове
TTimer через 1 сек. увеличивается на 1 ед.
tnachrab - время начала работы программы, равняется 1.
Почему идет приращение EH1, если условие ложно?
Код:
if (tpostzad <= Vremy - tnachrab) then
begin
if K1sost = false then
begin
EH1 := EH1+1;
end
else
begin
tnachobrK1: = Vremy;
K1sost :=false;
end
end
AND вне форума Ответить с цитированием
Старый 12.11.2007, 14:00   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Почему идет приращение EH1, если условие ложно?
Потому что вы это задали:
if K1sost = false then
begin
EH1 := EH1+1;
end
mihali4 вне форума Ответить с цитированием
Старый 12.11.2007, 14:07   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Почему идет приращение EH1, если условие ложно?
Это нужно весь код анализировать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.11.2007, 20:14   #4
AND
 
Регистрация: 05.11.2007
Сообщений: 8
Печаль

Дело в том, что в начале K1sost = true, тоесть условие If первое ложное и следовательно код выполняться не должен, а если в if поменять условие на true, то приращение вообще не идет...
AND вне форума Ответить с цитированием
Старый 13.11.2007, 20:33   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от AND Посмотреть сообщение
Дело в том, что в начале K1sost = true, тоесть условие If первое ложное и следовательно код выполняться не должен, а если в if поменять условие на true, то приращение вообще не идет...
В смысле, до приведенного вами отрывка у вас где-то заведомо устанавливается K1sost = true ?
Тогда ищите все операторы K1sost:=False у себя в тексте, ставьте на них брэкпойнты и смотрите, где у вас True меняется на False до обращения к указанному отрывку.
mihali4 вне форума Ответить с цитированием
Старый 14.11.2007, 08:08   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
следовательно код выполняться не должен
Я скажу так: Во-первых неплохо бы пройтись по шагам в этом коде и посмотреть правда ли что при K1sost = true выполняется EH1 := EH1+1, если нет, то нужно искать где еще выполняется это EH1 := EH1+1, может есть какой лишний разик, потому и говорю - нуна весь код анализить.
Во-вторых если чесно я натыкался на баги когда делфа действительно странным образом выполняла такие условия непонятно почему... Так и не разобрался накосячил ли я или глюкнула делфа, но такое было причем на малюсеньких проектах где накосячить то негде...

Так что отладчик тебе в помошь уважаемый студент.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.11.2007, 08:28   #7
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
По умолчанию

и вместо 'if K1sost = false then'
принято писать 'if Not K1sost then'

вообще в коде естьлишние переменные, полюбому.
где увеличивается Vremy ?
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 16.11.2007, 16:19   #8
AND
 
Регистрация: 05.11.2007
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Virtson Посмотреть сообщение
где увеличивается Vremy ?
время увеличивает в TTimer. на 1 за 1 сек.
AND вне форума Ответить с цитированием
Старый 16.11.2007, 16:30   #9
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Цитата:
Сообщение от AND Посмотреть сообщение
время увеличивает в TTimer. на 1 за 1 сек.
Весь код предоставите?
Alex21 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CGI приложение, выполняется на удалённом ПК N!ckeL Работа с сетью в Delphi 2 25.07.2008 09:23
Web Не выполняется CGI Sweta Помощь студентам 6 20.05.2008 09:44
Все висит пока выполняется процедура XPAiN Общие вопросы Delphi 3 07.05.2008 15:03
Не выполняется запрос в SQL ivp88 БД в Delphi 5 17.01.2008 10:30
Почему не выполняется запрос? chingiz БД в Delphi 2 27.05.2007 21:56