ВУЗ:
Составители:
Рубрика:
5
Проиллюстрируем использование API из программ на Delphi следующей
лабораторной работой. Простой проект будет выполнять расчет традиционным
способом и, для сравнения , с помощью дополнительного потока.
Лабораторная работа № 1
1. Создав новый проект, расположим на форме кнопки с надписями
«С потоком», «Без потока» , «Приостановить», «Продолжить».
2. Напишем функцию func и создадим обработчики событий так , чтобы
листинг модуля принял вид:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
var hThread: THandle; // Дескриптор потока
ThreadID: DWord; // Идентификатор потока
{$R *.DFM}
// Эта функция далее будет выполняться внутри потока
function func (p: pointer): longint; stdcall;
var i: integer;
dc: hDc;//дескриптор контекста графического устройства
s: string;
begin
dc:=GetDc(form1.handle);//Получаем контекст формы
for i:=0 to 10000000 do begin
s := IntToStr(i); // Выводим в цикле число,
П роиллю стрируем исп ользованиеAPI изп рог рамм наDelphi следую щ ей
лаб ораторной раб отой. П ростой п роектб удетвы п олнять расчеттрадиционны м
сп особ ом и, для сравнения, сп омощ ью доп олнительног о п отока.
Лаб о рато рн ая раб о та № 1
1. Создав новы й п роект, расп олож им наф ормекноп киснадп исями
« С п отоком», « Безп отока», « П риостановить», « П родолж ить».
2. Н ап иш ем ф ункцию func исоздадим об раб отчикисоб ы тий так, чтоб ы
листинг модуля п ринял вид:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
var hThread: THandle; // Дескриптор потока
ThreadID: DWord; // Идентификатор потока
{$R *.DFM}
// Эта функция далее будет выполняться внутри потока
function func (p: pointer): longint; stdcall;
var i: integer;
dc: hDc;//дескриптор контекста графического устройства
s: string;
begin
dc:=GetDc(form1.handle);//Получаем контекст формы
for i:=0 to 10000000 do begin
s := IntToStr(i); // Выводим в цикле число,
5
Страницы
- « первая
- ‹ предыдущая
- …
- 3
- 4
- 5
- 6
- 7
- …
- следующая ›
- последняя »
