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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2007, 21:13   #1
_XspeC_
Xspectrum_
Пользователь
 
Регистрация: 26.03.2007
Сообщений: 11
По умолчанию помогите оптимизировать процедуру

Процедура вычисляет сколько времени работает ПК.
Это время узнаю функцией GetCurrentTime. Она выдаёт время в милисекундах. Потом путём немудрёных комбинаций (см. Листинг ниже) преобразовываю это дело в читабельный вид (DD:HH:MM:SS).
У меня вопрос:
знаю что это можна сделать проще... но как? ответа толком не могу найти.
Если есть минутка подскажите как (чтоб в итоге результат вывода на экран не поменялся)

ЗЫ. И если можна ещё: как прикрутить его к таймеру чтоб это время тикало?

Спасибо

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
time: real;
days, hours, minutes, seconds: integer;
begin
time := GetCurrentTime /1000;
days := Trunc(time/86400);
hours := Trunc((time - days*86400)/3600);
minutes := Trunc((time - days*86400 - hours*3600)/60);
seconds := Trunc(time - days*86400 - hours*3600 - minutes*60);
StaticText1.Caption := FloatToStr(days) + ' дней ' + FloatToStr(hours) + ' часов ' + FloatToStr(minutes) + ' минут ' + FloatToStr(seconds) + ' секунд';
StaticText2.Caption := FloatToStr(Trunc(time)) + ' секунд';
end;

Последний раз редактировалось _XspeC_; 26.03.2007 в 21:25.
_XspeC_ вне форума Ответить с цитированием
Старый 26.03.2007, 21:31   #2
execom
Редкий тунеядец
Форумчанин
 
Аватар для execom
 
Регистрация: 29.10.2006
Сообщений: 595
По умолчанию

Не знаю сможет ли тебе это помочь, но в принципе, совсем необязательно считать сколько времени пашет система, намного проще и точней узнать время работы системы выполнив в командной строке: systeminfo! А как это использовать думай сам, а может кто подскажет!
execom вне форума Ответить с цитированием
Старый 26.03.2007, 22:06   #3
_XspeC_
Xspectrum_
Пользователь
 
Регистрация: 26.03.2007
Сообщений: 11
По умолчанию

execom
пасип за инфу конечно. но мне нужно это осуществить в родных делфях
_XspeC_ вне форума Ответить с цитированием
Старый 26.03.2007, 22:50   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
знаю что это можна сделать проще... но как? ответа толком не могу найти.
Странно. Тут и искать ничего не надо. По-моему, функция FORMAT должна быть всем известна...
mihali4 вне форума Ответить с цитированием
Старый 27.03.2007, 10:18   #5
_XspeC_
Xspectrum_
Пользователь
 
Регистрация: 26.03.2007
Сообщений: 11
По умолчанию

Не ну я знаю что можна сделать вот так:
Код:
 
Label1.Caption:=FormatDateTime('HH:MM:SS',GetCurrentTime);
Но в итоге получится на отображении чтото типа: 12:05:06
А мне нужно: 0 дней 12 часов 05 минут 06 секунд

в этом то вся и загвоздка :\
_XspeC_ вне форума Ответить с цитированием
Старый 27.03.2007, 12:27   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от _XspeC_ Посмотреть сообщение
Не ну я знаю что можна сделать вот так:
Код:
 
Label1.Caption:=FormatDateTime('HH:MM:SS',GetCurrentTime);
Но в итоге получится на отображении чтото типа: 12:05:06
А мне нужно: 0 дней 12 часов 05 минут 06 секунд

в этом то вся и загвоздка :\
А так слабо было попробовать?
Label1.Caption:=FormatDateTime('HH часов MM минут SS секунд',GetCurrentTime);
mihali4 вне форума Ответить с цитированием
Старый 27.03.2007, 19:58   #7
_XspeC_
Xspectrum_
Пользователь
 
Регистрация: 26.03.2007
Сообщений: 11
По умолчанию

спасибо... нужный вид получился но с правильностью времени проблема.. помоему FormatDateTime и GetCurrentTime не очень то совместимы
_XspeC_ вне форума Ответить с цитированием
Старый 28.03.2007, 14:57   #8
londoner
Пользователь
 
Регистрация: 03.02.2007
Сообщений: 20
По умолчанию

Если нужно выводить время запуска и время окончания работы можно так:

Цитата:
Label1.Caption:=DateTimeToStr(Now);
выводим в label строку с датой и временем с точностью до секунд.

Если нужно получить именно время и дату, причём желательно год, месяц и тд отдельно, то можно воспользоватся станлартным типом TSystemTime.

Цитата:
TSystemTime = record
wYear,wMonth,wDayOfWeek,wDay,wHour, wMinute,wSecond,wMilliseconds:Word

end;
Получить его можно так:

Цитата:
DateTimeToSystemTime(Now,systime);
Now - функция, выдающая время и дату в формате TDateTime;
systime - переменная типа TSystemTime

Типа например так:

Цитата:
procedure TForm1.Timer1Timer(Sender: TObject);
var Time : TSystemTime;
begin
DateTimeToSystemTime(Now,Time);
with Time do
Label1.Caption:=inttostr(wDay)+' '+inttostr(wMonth)+' '+inttostr(wYear)+' '+inttostr(wHour)+' '+inttostr(wMinute)+' '+inttostr(wSecond);
end;

Последний раз редактировалось londoner; 28.03.2007 в 15:02.
londoner вне форума Ответить с цитированием
Старый 28.03.2007, 17:58   #9
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
По умолчанию ...

только вместо
Код:
inttostr(wDay)+' '+inttostr(wMonth)+' '+inttostr(wYear)+' '+inttostr(wHour)+' '+inttostr(wMinute)+' '+inttostr(wSecond);
end;
я бы посоветовал
Format('%d '%d '%d '%d '%d '%d', [wDay, wMonth, wYear, wHour, wMinute, wSecond]);
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 30.03.2007, 16:00   #10
_XspeC_
Xspectrum_
Пользователь
 
Регистрация: 26.03.2007
Сообщений: 11
По умолчанию

спасибо конечно всем за ответы, но:
Цитата:
Процедура вычисляет сколько времени работает ПК
а не который сейчас час. С выводом текущего времени я пока что успешно справляюсь
_XspeC_ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите оптимизировать процедуру Cold Went Компоненты Delphi 4 29.04.2008 15:11
Помогите оптимизировать! Altera Общие вопросы Delphi 6 25.03.2008 20:09
Помогите оптимизировать HTML код после Publisher Гербера HTML и CSS 16 03.12.2007 11:46
Помогите оптимизировать сайт Nadejda HTML и CSS 4 07.01.2007 21:04