Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Калибровка таймера [D6, WinME, WinXP]


Drex ©   (2003-03-19 10:17:00) 

Вот текст процедуры: Под WinME все работает прекрасно, а вот под XP пустой цикл почему-то выполняется мгновенно и соответственно разница во временах начала и завершения цикла нулевая. Уважаемые знатоки, подскажите в чем дело?
procedure TOptionsForm.CalibrateDelays;
var
StartTime : TDateTime;
i : LongWord; //Счетцик циклов
Delta : Word; //Длительность цикла в мсек
Begin
ProcessForm:=TProcessForm.Create(Application);
ProcessForm.Show;
StartTime:=Time;
i:=0;
Repeat
Inc (i);
//Application.ProcessMessages;
Until i<200000000;
Delta:=MillisecondsBetween (Time, StartTime);
CyclPermS:=200000000 Div Delta;
CyclPermSLabel.Caption:=IntToStr(CyclPermS)+" "+TimeToStr(StartTime)+" "+TimeToStr(Time);
ProcessForm.Free;
End;


Drex   (2003-03-19 12:11:00) [1]

Sleep на маленьких задержках порядка 1-2 мс сильно врет, а вот про WaitFor я еще не слыхал ни разу...


Слесарь Матерящийся   (2003-03-19 10:51:00) [2]

Для реализации задержек следует использовать ф-и Sleep() и WaitFor...(). Замкнутые циклы - плохой стиль.


Drex   (2003-03-19 10:46:00) [3]

Прошу прощения одну строку неправильно написал

Until i=200000000;


Наверх

Титульная страница Поиск, карта сайта Написать письмо