Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
Національний університет «Львівська політехніка»
Кафедра АСУ
Звіт
до лабораторної роботи №10
з курсу “Об'єктно орієнтоване програмування”
Варіант 8
Львів 2010Тема: Створення багатопотокових ужитків
Мета роботи: Вивчення можливостей системи програмування Delphi 5 по створенню багатопотокових ужитків.
Завдання
Створити проект - модель "Обчислення та малюваня". Обчислення здійснюється в основному модулі, для відображення рухомого малюнка, використати окремий потік.
Текст програми:
unit O10;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,unit2;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormPaint(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
My:TMyThread;
X,Y:integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
X:=0;
Y:=0;
Randomize;
My:=TMyThread.Create(false);
My.Owner:=Self;
end;
// Обчислюэмо та малюэмо
procedure TForm1.FormPaint(Sender: TObject);
var i,j:integer;
begin
with Canvas do
begin
MoveTo(My.Point[1].X,My.Point[1].Y);
LineTo(My.Point[2].X,My.Point[2].Y);
LineTo(My.Point[3].X,My.Point[3].Y);
LineTo(My.Point[1].X,My.Point[1].Y);
end;
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type TMyThread=class(TThread)
Owner:TForm;
Point,DMove:array [1..3]of TPoint;
procedure Execute;override;
end;
implementation
procedure TMyThread.Execute;
begin
//Зміщення кординат трикутника
DMove[1].X:=5;
DMove[1].Y:=5;
DMove[2].X:=4;
DMove[2].Y:=4;
DMove[3].X:=3;
DMove[3].Y:=3;
//Безкінечний цикл обчислення нових координат трикуткика на площині
repeat
Point[1].X:=Point[1].X+DMove[1].X;
Point[1].Y:=Point[1].Y+DMove[1].Y;
Point[2].X:=Point[2].X+DMove[2].X;
Point[2].Y:=Point[2].Y+DMove[2].Y;
Point[3].X:=Point[3].X+DMove[3].X;
Point[3].Y:=Point[3].Y+DMove[3].Y;
//Перевірка на межі вікна
if (Point[1].X>Owner.ClientWidth) or (Point[1].X<0) then DMove[1].X:=-DMove[1].X;
if (Point[1].Y>Owner.ClientHeight) or (Point[1].Y<0) then DMove[1].Y:=-DMove[1].Y;
if (Point[2].X>Owner.ClientWidth) or (Point[2].X<0) then DMove[2].X:=-DMove[2].X;
if (Point[2].Y>Owner.ClientHeight) or (Point[2].Y<0) then DMove[2].Y:=-DMove[2].Y;
if (Point[3].X>Owner.ClientWidth) or (Point[3].X<0) then DMove[3].X:=-DMove[3].X;
if (Point[3].Y>Owner.ClientHeight) or (Point[3].Y<0) then DMove[3].Y:=-DMove[3].Y;
//При отриманні нових координат - перемальовуємо вікно
Owner.Repaint;
//Затримка на 10 мілісекунд
sleep(10);
until false;
end;
end.
object Form1: TForm1
Left = 251
Top = 179
Width = 431
Height = 210
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
OnPaint = FormPaint
PixelsPerInch = 96
TextHeight = 13
End
program Project1;
uses
Forms,
O10 in 'O10.pas' {Form1},
Unit2 in 'Unit2.pas';
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Скріншоти роботи програми
Висновок: На даній лабораторній роботі я вивчив можливості системи програмування Delphi 5 по створенню багатопотокових ужитків.