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