Форум: "Основная";
Текущий архив: 2004.02.17;
Скачать: [xml.tar.bz2];
ВнизНеточный таймер? Найти похожие ветки
← →
romeo (2004-02-07 18:49) [0]Данная программа должна "останавливать" системное время компьютера, отображая в TLabel время реальное. По завершении работы системное время восстанавливается.
var
StartTime: TDateTime;
SavedTime: TDateTime;
function SetPCSystemTime(tDate: TDateTime): Boolean;
var
TZI: TTimeZoneInformation;
ST: TSystemTime;
begin
GetTimeZoneInformation(TZI);
DateTimeToSystemTime(tDate + TZI.Bias / 1440, ST);
Result := SetSystemTime(ST);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
StartTime := Now;
SavedTime := 0;
Label1.Caption := TimetoStr(StartTime);
end;
procedure TForm1.Timer1Timer(Sender: TObject); // Timer1.Interval = 1000
begin
SavedTime := SavedTime + Now - StartTime;
SetPCSystemTime(StartTime);
Label1.Caption := TimeToStr(StartTime + SavedTime);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
SetPCSystemTime(StartTime + SavedTime);
end;
В общем, сия конструкция отстает за минуту приблизительно на 4 секунды. Отсюда - сабж.
З.Ы. Для тех кому интересно "А на фига все это надо?"
Принесли мне кино на DVD. Скачал себе BlazeDVD. Оказалась триальная версия (за регистрацию просят 40$) - через 10 мин (прямо так и написано в ейной справке) отрубается и надо заново ее запускать и т.д. Короче - гемор, а денег жалко.
В общем прогу я сделал, фильм посмотрел, а потом выяснилось, что часы на компе здорово отстали. Взял секундомер, засек время, решил написать сюда...
← →
VMcL (2004-02-07 18:53) [1]>>romeo © (07.02.04 18:49)
Windows не является ОС реального времени. IMHO, единственное, что можно посоветовать -QueryPerformanceFrequency() + QueryPerformanceCounter()
.
← →
romeo (2004-02-07 19:18) [2]
> VMcL © (07.02.04 18:53) [1]
Это типа так, что-ли?
var
F, C1, C2: Integer;
QueryPerformanceFrequency(@F);
// в какой-то момент
QueryPerformanceCounter(@C1);
// а в другой
QueryPerformanceCounter(@C2);
// и время между ними
Result := (c2 - c1)/F;
И что получим, секунды?
Заранее спасибо...
← →
VMcL (2004-02-08 01:12) [3]>И что получим, секунды?
Типа того :)
P.S> Result: Double, Single или Extended, надеюсь.
← →
VMcL (2004-02-08 01:14) [4]>var
>F, C1, C2: Integer;
Doh!
F, C1, C2: Int64;
BOOL QueryPerformanceFrequency(
LARGE_INTEGER *lpFrequency // address of current frequency
);
← →
VID (2004-02-08 01:42) [5]Удалено модератором
Примечание: Ты не перепутал сайт, с креками это не сюда
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.02.17;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c