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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.10.2008, 23:00   #1
DeDoK
Форумчанин
 
Аватар для DeDoK
 
Регистрация: 05.11.2007
Сообщений: 392
Вопрос цикл if... then..else

Вопрос: почему при написании кода

Код:
procedure TForm1.ResultTimerTimer(Sender: TObject);
var
Popadanie : integer;
begin
Popadanie:=StrToInt(Label3.Caption);
if Popadanie=10 then begin
Timer1.Enabled:=false;
ShowMessage('Игра окончена: 10/10');
end;
end;
программа при запуске сразу выводит это сообщение. Как сделать корректную проверку
типа если popadanie = 10 то остановить таймер1 и показать сообщение.
DeDoK вне форума Ответить с цитированием
Старый 08.10.2008, 23:37   #2
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
По умолчанию

ну это не цикл а ветвление.
Срабатывает потому что Label3.caption равно 10.
dr.Chas вне форума Ответить с цитированием
Старый 08.10.2008, 23:43   #3
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Цитата:
программа при запуске сразу выводит это сообщение
Так как он у тебя включен.Отключить enabled:=false;
Цитата:
Как сделать корректную проверку
типа если popadanie = 10 то остановить таймер1 и показать сообщение.
как ты сделал так и делай
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 09.10.2008, 00:07   #4
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

что-то нифига я вас тут не понимаю... Скинь исходник...
Arkuz вне форума Ответить с цитированием
Старый 09.10.2008, 00:08   #5
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Исходник в первом посте.
+поставь в свойствах у таймера Enabled:=false
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 09.10.2008, 12:50   #6
Лубышев
Участник клуба
 
Аватар для Лубышев
 
Регистрация: 23.07.2007
Сообщений: 1,054
По умолчанию

не лучше ли так?
Код:
Timer1.Enabled:=false;
.....
.....
.....
//Че то включило таймер
Timer1.Enabled:=true;
....
procedure TForm1.ResultTimerTimer(Sender: TObject);
begin
StrToIntDef(Label3.Caption,0)>=10// вдруг окажется так что попаданий больше :) 
then begin
Timer1.Enabled:=false;
ShowMessage('Игра окончена:'+StrToIntDef(Label3.Caption,0)+'/10');
end;
end;
Думаю так все же будет лучше работать
Писано по д'Эльфийски
Лубышев вне форума Ответить с цитированием
Старый 09.10.2008, 14:47   #7
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

А для чего здесь таймер вообще???
При попадании пишем
Код:
if Popadanie >= 10 Then
begin
label3.caption :='0'; 
showmessage("Игра окончена");
exit;
end else
label3.caption:= inttostr(Popadanie);
// и играем дальше
_SERGEYX_ вне форума Ответить с цитированием
Старый 11.10.2008, 11:01   #8
DeDoK
Форумчанин
 
Аватар для DeDoK
 
Регистрация: 05.11.2007
Сообщений: 392
Вопрос

Цитата:
Сообщение от _SERGEYX_ Посмотреть сообщение
А для чего здесь таймер вообще???
_SERGEYX_ а каким макаром тогда проверять если значение label3 очень часто меняется? буквально каждую секунду
DeDoK вне форума Ответить с цитированием
Старый 11.10.2008, 11:31   #9
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Попробуйте такой вариант:
Код:
procedure TForm1.ResultTimerTimer(Sender: TObject);
begin
Timer1.Enabled:=false;
StrToIntDef(Label3.Caption,0)>=10// вдруг окажется так что попаданий больше :) 
then
ShowMessage('Игра окончена:'+StrToIntDef(Label3.Caption,0)+'/10') else
Timer1.Enabled:=True;
end;
end;
А вновь таймер у вас должен запускаться при старте новой игры.
Вообще-то, считается хорошим тоном в первую очередь выключать таймер по его собственному срабатыванию, а уж потом, в результате анализа неких условий, принимать решение о его включении вновь.
mihali4 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цикл For Each Bu$ter Microsoft Office Excel 5 24.09.2008 16:49
Цикл Sota Паскаль, Turbo Pascal, PascalABC.NET 1 24.03.2008 19:50
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34
3-ой цикл LeoN Общие вопросы Delphi 5 12.06.2007 14:15