| 
| 
 | Вопрос # 4 221/ вопрос открыт / | 
 |  Здравствуйте, эксперты!Пожалуйста помогите с программкой! Очень нужна помощь! Я тут для себя делаю пограммку обратного отсчёта. То есть хочу сделать сделать таймер чтоб мог отсчитывать не только минуты и секунды, но и часы.
 Так то всё работает, но проблема с отсчётом. Как правильно делать такую программу?
 К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса) 
|  |   Вопрос задал: Andrew_Cyber (статус: Посетитель)Вопрос отправлен: 24 мая 2010, 18:28
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 9; последнее сообщение — 25 мая 2010, 21:10; участников в обсуждении: 4. 
|   | lx (статус: Посетитель), 24 мая 2010, 19:03 [#1]:жесть xD |  
|   | min@y™ (статус: Доктор наук), 24 мая 2010, 20:57 [#2]:Как дочитал до... 
 If (UpDown1.Position = 0) or (UpDown1.Position = 5) or  (UpDown1.Position = 6) or
   (UpDown1.Position = 7) or (UpDown1.Position = 8) or (UpDown1.Position = 9) or
   (UpDown1.Position = 10) or (UpDown1.Position = 11) or (UpDown1.Position = 12) or
   (UpDown1.Position = 13) or  (UpDown1.Position = 14) or (UpDown1.Position = 15) or
   (UpDown1.Position = 16) or (UpDown1.Position = 17) or (UpDown1.Position = 18) or
   (UpDown1.Position = 19) or (UpDown1.Position = 20) 
then StaticText1.Caption:='часов';
 
If (UpDown1.Position = 1) or (UpDown1.Position = 21)
then StaticText1.Caption:='час';
 
If (UpDown1.Position = 2) or (UpDown1.Position = 3) or (UpDown1.Position = 4) or
   (UpDown1.Position = 22) or (UpDown1.Position = 23) or (UpDown1.Position = 24)
then StaticText1.Caption:='часа';...то дальше читать не стал, ибо боюсь необратимых повреждений своей психики. В паскале есть такая хренотень, называется оператор "case". Благодаря этой хренотени этот кошмар можно заменить на это:
 
 case UpDown1.Position of
  1, 21:        StaticText1.Caption:='час';
  2..4, 22, 23: StaticText1.Caption:='часа';
else            StaticText1.Caption:='часов';
end; Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Andrew_Cyber (статус: Посетитель), 25 мая 2010, 07:24 [#3]:min@y™: ну это не суть важно. главное чтоб часы отсчитывал. |  
|   | min@y™ (статус: Доктор наук), 25 мая 2010, 08:14 [#4]: Цитата (Andrew_Cyber): ну это не суть важно. главное чтоб часы отсчитывал.  Я вижу у тебя там 3 переменных, храняших часы, минуты и секунды. Выкинь их нафиг, вместо них заведи одну переменную - кол-во секунд, оставшихся до конца отсчёта, и по таймеру декрементируй. А чтобы вывести на экран кол-во оставшихся часов/минут/секунд, вычисляй их из общего кол-ва оставшихся секунд.
 
   Hours:= TotalSeconds div 3600;
  Minutes:= (TotalSeconds mod 3600) div 60;
  Seconds:= TotalSeconds mod 60;И убери эти жуткие if ... or ... or ... or ... then ... Это ж кашмар и ужос! Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Andrew_Cyber (статус: Посетитель), 25 мая 2010, 17:35 [#5]:спасибо за помощь |  
|   | min@y™ (статус: Доктор наук), 25 мая 2010, 17:50 [#6]: Цитата (Andrew_Cyber): спасибо за помощь  Что, помогло?
 Покажи, что получилось.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Вадим К (статус: Академик), 25 мая 2010, 20:52 [#8]:додуматься - сорцы в картинке выложить... Галочка "подтверждения прочтения" - вселенское зло. |  
|   | min@y™ (статус: Доктор наук), 25 мая 2010, 21:10 [#9]: Цитата (Вадим К): додуматься - сорцы в картинке выложить...  Сначала он выложил их тут текстом. Получилось хуже. Русские комментарии превратились в ХЗЧ. Наверное, при копировании раскладка была английской.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |