ВУЗ:
Составители:
Рубрика:
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
- …
- следующая ›
- последняя »