Цитата
Хрен его знает! Но меньше 10 миллисекунд точно не имеет значения, меньше 100 миллисекунд будет врать безбожно, а на более больших интервалах погрешность будет в перделах разумного. Впрочем топик не об этом.
Невыдержал, решил проверить...
За 10 минут погрешность таймеров
в 1 сек - менее 0.01%
в 0.01 сек - менее 1%
для проверки использовался код:
### 1 ###
Код
var
T1, T2, T3: Integer;
procedure TForm1.FormCreate(Sender: TObject);
begin
T1 := GetTickCount;
T2 := 0;
T3 := 0;
Timer1.Enabled := True; {1}
Timer2.Enabled := True; {1000}
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Inc(T2, 10);
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
Inc(T3, 1000);
end;
procedure TForm1.Timer3Timer(Sender: TObject);
begin
Label1.Caption := IntToStr(GetTickCount-T1);
Label2.Caption := IntToStr(T2);
Label3.Caption := IntToStr(T3);
end;
### 2 ###
Код
var
T1, T2, T3: Integer;
Mas: array[0..999] of Integer;
procedure TForm1.FormCreate(Sender: TObject);
begin
T1 := 0;
T2 := GetTickCount;
Timer1.Enabled := True;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
T3 := GetTickCount;
Mas[T1] := T3-T2;
T2 := T3;
Inc(T1, 1);
if T1>999 then
begin
Timer1.Enabled := False;
for T1 := 0 to 999 do
Memo1.Lines.Add(IntToStr(Mas[T1]));
end;
end;