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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2010, 23:46   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
Вопрос Таймер. Конвертирование ms в часы,минуты, секунды.. ищу решения..

Привет =)
Собственно вопросы по работе с этим компонентом..
Пишу программу типа Power Off (выключение компьютера через определённое время..)

Дело не в функциях ребура,выключения.. дело в отсчете времени..

С чего начинать?
Есть идея .. брать текущее время, фиксировать как точку отсчета..
прибовлять время до события....
и отсчитывать..

Как второй вариант. не оброщать внимания на системное время..
считать время рабты программы.

Вот в чем суть..
Есть 3 TrackBar'а
минуты секунды часы.

Часы 24.
минуты и секунды по 59 максимум.

собственно как заставить таймер считать в секундах.. а не в милисекундах....
24 часа это порядка 9 миллиардов милисекунд.. но таймер не поддерживает такого значения..
Подскажите решения.. я не нахожу его толком.

думаю умножать позицию трекбара на 1000... и получать ms .. но это довольно "допотопным" кажется...
Человек_Борща вне форума Ответить с цитированием
Старый 08.04.2010, 00:22   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...а вы в таймере сделайте второй глобальный счетчик, скажем таймер имеет период секунду, внутри счетчик-переменная через 1000 циклов дает вам 1000 секунд ...смысл ясен?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 08.04.2010, 01:42   #3
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Код:
function TimeIntToStr(N: Integer): string;
begin
  Result := IntToStr(N);
  if Length(Result) = 1 then
    Result := '0' + Result;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var Hours, Minutes, Seconds: Integer;
  S: string;
begin
  S := Edit1.Text;
  Hours := StrToIntDef(Copy(S, 1, Pos(':', S) - 1), 0);
  Delete(S, 1, Pos(':', S));
  Minutes := StrToIntDef(Copy(S, 1, Pos(':', S) - 1), 0);
  Delete(S, 1, Pos(':', S));
  Seconds := StrToIntDef(S, 0);
  Seconds := Seconds - 1;
  if Seconds < 0 then begin
    Seconds := 59;
    Minutes := Minutes - 1;
    if Minutes < 0 then begin
      Minutes := 59;
      Hours := Hours - 1;
      if Hours < 0 then begin
        Timer1.Enabled := False;
        Hours := 0;
        Minutes := 0;
        Seconds := 0;
        {** После завершения отсчета произойдет код... **}
      end;
    end;
  end;
  Edit1.Text := TimeIntToStr(Hours) + ':' +
    TimeIntToStr(Minutes) + ':' +
    TimeIntToStr(Seconds);
end;
Код моего друга, писал для меня, так как тоже нужен был "таймер"...

P.S.: первоначально Timer1.Enabled:=false;
В edit1 вводиться время, например: "00:00:40" (40сек) и при Enabled:=true Timer1 - отсчет запускаеться до 00:00:00...

--Добавлено--
Если чо надеюсь на плюсик, так как это моё 400ое сообщение...
W0LF вне форума Ответить с цитированием
Старый 08.04.2010, 09:51   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Есть идея .. брать текущее время, фиксировать как точку отсчета..
прибовлять время до события....
Брать текущее время прибавлять время до события фиксировать как время наступления события
в таймере с любой заданной частотой (секунда/минута/час/...) проверять а не пора ли
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 08.04.2010 в 09:56.
evg_m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
с++,градусы и минуты Krezol Помощь студентам 3 17.02.2010 20:28
Разложить секунды на чч:мм:cc Anatol_rus Общие вопросы Delphi 2 03.10.2009 12:56
Перевести милесекунды в секунды Crivel Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 29.06.2009 11:45
Перевести секунды в мелесекунды Crivel Помощь студентам 4 07.08.2008 18:07