Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.05.2008, 22:13
Чипырик Чипырик вне форума
Прохожий
 
Регистрация: 14.04.2008
Сообщения: 22
Репутация: 10
По умолчанию Работа с переменными времени

Здраствуйте, подскажите как правильно работать со временем? (складывать, вычитать).
А то написал код, который высчитывает оставшееся время до наступления события. Работает не правильно...

Код:
1
2
3
4
5
var t:TTime;
begin
 t:=StrToTime(18:00:00);
 Label1.Caption:=TimeToStr(Time-t);
end;

Вобщем считает правильно, когда t<Time... А когда t>Time, то считает уже не правильно, значение начинает увеличиваться(подозреваю до 00:00:00)...

Как мне с этим бороться?
Ответить с цитированием
  #2  
Старый 06.05.2008, 19:47
Чипырик Чипырик вне форума
Прохожий
 
Регистрация: 14.04.2008
Сообщения: 22
Репутация: 10
По умолчанию

штоли никто не знает?
Ответить с цитированием
  #3  
Старый 06.05.2008, 20:07
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,093
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

а, собственно, что ты хочешь? Если у тебя t в будущем, то надо делать t - Time - время до события. Если тебе надо учитывать переход через сутки, то еще заполняй часть даты (Date).

Задачу конкретизируй.
Ответить с цитированием
  #4  
Старый 06.05.2008, 20:57
Чипырик Чипырик вне форума
Прохожий
 
Регистрация: 14.04.2008
Сообщения: 22
Репутация: 10
По умолчанию

Конкретизирую...
Есть программа выключения компьтера во время t.
Есть Лэйбл, который пишет, сколько осталось до выключения...
В моей проге это реализовано, как я писал выше. Если написать t-Time... то значение Лэйбла идентично первому варианту, что не есть правильно.

Возможен вариант перехода через сутки. Например: выключить комп в 03:00, а текущее время 21:00...

Как-то не соображу просчет оставшегося времени
Ответить с цитированием
  #5  
Старый 06.05.2008, 21:34
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,093
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

высчитай время выключения, включая дату.
далее, получаешь кол-во секунд до выключения (SecondsBetween()).
А уж как ты отформатируешь кол-во секунд - это твое дело. можно показать в секундах, можно получить в часах, минутах.

Код:
1
2
3
4
5
6
7
8
9
function GetTimeFromSecs(ASecs : Integer) : String;
var
  hh, mm, ss : integer;
begin
  hh := ASecs div 3600;
  mm := (ASecs mod 3600) div 60;
  ss :=  (ASecs mod 3600) mod 60;
  Result := Format('%d:%d:%d',[hh,mm,ss]);
end;
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:27.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025