Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Алгоритм обратного отсчёта

431
30 июля 2007 года
sherry
207 / / 16.10.2006
Вынужден просить у Вас помощи. Суть дела вот в чём: творю программку SLEEP-er и что-то затормозил на алгоритме обратного отсчёта. Пробовал, пытался чего-то организовать - получилось обрабатывать минуты и сеунды, а вот с часами проблемка.

У меня есть алгоритм секундомера. Можно отталкиваться от него.

Код:
procedure TForm1.Timer2Timer(Sender: TObject);
var ms, sec, min, h: integer;
    hh, mm, ss: string;
begin
inc(r);
ms :=r mod 60;
sec := r div 60;
min := sec mod 60;
h := min div 60;

if ms < 10 then ss := '0' + IntToStr(ms)
  else  ss := IntToStr(ms);
if min < 10 then mm:='0' + IntToStr(min)
  else  mm := IntToStr(min);
if h < 10 then hh := '0' + IntToStr(h)
  else  hh := IntToStr(h);

label2.Caption := hh + ':' + mm + ':' + ss;
end;


Надеюсь на Вашу помощь! Заранее благодарен.
276
30 июля 2007 года
Rebbit
1.1K / / 01.08.2005
Что ж ты везде на 60 делиш :).
И начинать помойму с часов надо.
 
Код:
h = r div (60 * 60 * 1000)
r = r mod (60 * 60 * 1000)
min = r div (60 * 1000)
r = r mod (60 * 1000)
sec = r div 1000
ms = r mod 1000

Только проверь, ато я без компилера тут пишу.
10
31 июля 2007 года
Freeman
3.2K / / 06.03.2004
Цитата: sherry
что-то затормозил на алгоритме обратного отсчёта.


Код:
type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    C4Time, Tick: TDateTime;
  end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  C4Time := EncodeTime(0, 0, 35, 0);
  Tick := EncodeTime(0, 0, Timer1.Interval div 1000, 0);
  Label1.Caption := TimeToStr(C4Time);
  Timer1.Enabled := True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  C4Time := C4Time - Tick;
  if C4Time >= Tick then
  begin
    Label1.Caption := TimeToStr(C4Time);
    Beep;
  end
  else
  begin
    Label1.Caption := 'Terrorists win';
    Timer1.Enabled := False;
  end;
end;
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог