Валерий Борисок - Delphi. Трюки и эффекты

Здесь есть возможность читать онлайн «Валерий Борисок - Delphi. Трюки и эффекты» — ознакомительный отрывок электронной книги совершенно бесплатно, а после прочтения отрывка купить полную версию. В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программы, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Delphi. Трюки и эффекты: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Delphi. Трюки и эффекты»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

«Delphi. Трюки и эффекты», как и все издания данной серии, адресована тем, кто хочет научиться делать с помощью уже знакомых программных пакетов новые, интересные вещи. В первой части книги многое говорится о среде разработки Delphi (самых последних версий) и программировании на языке Object Pascal. Благодаря этому издание подходит и новичкам, и начинающим программистам. Вторая (основная) часть книги описывает удивительные возможности, скрытые в языке, и на примерах учит читателя программистским фокусам – от «мышек-невидимок» и «непослушных окон» до воспроизведения МРЗ и управления офисными программами Word и Excel из приложений Delphi. Купив эту книгу, вы пройдете непростой путь к вершинам программистского мастерства весело и интересно.

Delphi. Трюки и эффекты — читать онлайн ознакомительный отрывок

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Delphi. Трюки и эффекты», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать
...

Листинг 7.11. Функции изменения точности таймера

Var lastPeriod: Cardinal;

//Установка периода таймера (мс) перед началом измерения

function timeSetTimerPeriod(period: Cardinal): Boolean;

begin

if timeBeginPeriod(period) = TIMERR_NOERROR then

begin

//Сохраним значение для восстановления состояния таймера

lastPeriod := period;

timeSetTimerPeriod := True;

end

else

//Неудача

timeSetTimerPeriod := False;

end;

//Восстановление периода таймера (обязательно)

function timeRestoreTimerPeriod(): Boolean;

begin

if timeEndPeriod(lastPeriod) = TIMERR_NOERROR then

timeRestoreTimerPeriod := True

else

timeRestoreTimerPeriod := False;

end;

Теперь, после долгого рассмотрения особенностей настройки мультимедиа-таймера, приведем пример его использования для измерения времени выполнения простейшего отрезка программы (листинг 7.12).

...

Листинг 7.12.

Измерение времени выполнения отрезка программы

procedure TForm1.cmbTimeGoClick(Sender: TObject);

var

summ, arg, maxVal: Int64;

startTime, endTime: Cardinal;

begin

txtTimeResult.Text := \'Измерение…\

Refresh;

maxVal := StrToInt(txtTimeMaxVal.Text);

//Устанавливаем маскимальную точность таймера

timeSetTimerPeriod(timeGetMinPeriod());

startTime := timeGetTime(); //Начальный момент времени

//Суммируем 64-битные числа

//(как раз и измеряем время его выполнения)

summ := 0;

arg := 1;

while (arg <= maxVal) do

begin

Inc(summ, arg);

Inc(arg);

end;

endTime := timeGetTime(); //Конечный момент времени

//Восстанавливаем период таймера

timeRestoreTimerPeriod();

//Время выполнения операций (мс)

txtTimeResult.Text := IntToStr(endTime – startTime);

end;

Создание программного таймера высокой точности

В самом начале рассмотрения возможностей мультимедиа-таймера было сказано, что в его API заложена возможность создания программных таймеров. Это действительно так. Причем максимальная точность такого таймера может получиться довольно большой: на современных компьютерах создание программного таймера с периодом срабатывания 1 мс – не проблема. Правда, использовать максимальную частоту таймера вряд ли стоит: слишком велика вероятность ошибки как минимум на 1 мс.

Теперь уясним, что же за программный таймер мы создаем и чем он отличается от компонента Timer,помещаемого на форму. А отличается наш таймер, кроме высокой точности, тем, что его не нужно привязывать к окну (форме): при срабатывании стандартного компонента Timerокну, за которым он закреплен, посылается сообщение WM_TIMER. Создаваемый же нами таймер работает по-другому, что удобнее рассмотреть на примере.

...

timerID := timeSetEvent

(

StrToInt(txtTimeInterval.Text), //Интервал между

//срабатываниями таймера

timeGetMinPeriod(), //Точность таймера

TimerProc, //Адрес процедуры, вызываемой при каждом

//срабатывании таймера

0, //Параметр, передаваемый в процедуру

//обратного вызова

TIME_CALLBACK_FUNCTION or TIME_PERIODIC //Тип таймера

);

В приведенном выше отрывке программы с помощью функции timeSetEvent происходит регистрация и запоминание адреса процедуры TimerProc, вызываемой периодически при срабатываниях таймера. При успешном создании таймера функция timeSetEvent возвращает ненулевое значение – идентификатор созданного таймера. Оно может использоваться в дальнейшем для определения, какой именно таймер сработал. Значение, возвращенное функцией timeSetEvent, также необходимо при удалении таймера:

...

timeKillEvent(timerlD);

Функция timeKillEvent возвращает целочисленное значение:

• TIMERR_NOERROR – если ее вызов завершился успешно;

• MMSYSERR_INVALPARAM – если таймера, заданного параметром функции, не существует.

Теперь о процедуре, адрес которой мы передаем в функцию timeSetEvent. В нашем примере она выглядит следующим образом (листинг 7.13).

...

Листинг 7.13.

Процедура, вызываемая при срабатывании таймера

procedure TimerProc(uTimerID, uMessage: UINT; dwUser, dw1, dw2:

DWORD) stdcall;

begin

//Добавляем текущее значение времени в список (чтобы была

//видна разница между моментами вызова этой процедуры)

Form1.lstTimes.Items.Add(IntToStr(timeGetTime()));

end;

Естественно, действия, выполняемые процедурой TimerProc, могут быть самыми различными. В нашем случае происходит заполнение списка (List) значениями счетчика «тиков» таймера на момент вызова процедуры (рис. 7.5).

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Delphi. Трюки и эффекты»

Представляем Вашему вниманию похожие книги на «Delphi. Трюки и эффекты» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Delphi. Трюки и эффекты»

Обсуждение, отзывы о книге «Delphi. Трюки и эффекты» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x