Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
Національний університет «Львівська політехніка»
Кафедра АСУ
Звіт
до лабораторної роботи №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 по створенню багатопотокових ужитків.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!