Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Создание и установка пакетов




Обычно пакеты размещают в папку Windows\System. Просмотр пакетов можно осуществить командой Component/Install Packages. Выде­ли­те нужный компонент и нажмите кнопку Components. Этой командой можно добавить, удалить или временно отключить, убрав флажок, отдельные пакеты.

Создание пакета можно начать с команды Component/Install Component/Into new Package и далее заполнить поля окна Install Component (рис. 4.2.2) или выполнить команду File/New/Package для вы­зо­ва редактора пакетов (этот вариант более удобен) (рис. 4.4.1) Для добавления или удаления ис­поль­зуются кнопки Add, Remove. Компиляция и уста­нов­ка пакета осу­щест­­вля­ется кноп­ками Compile и Install. Коррек­ти­ровка нужного мо­ду­­ля осу­щест­вляется ко­ман­­дой Open из контекстного ме­ню или двой­ным щел­ч­ком по име­ни модуля. Кнопкой Options можно выз­вать окно настройки пакета.

Рис. 4.4.1. Редактор пакетов

 

Использование пакетов

Пакеты можно разделить на две группы, используемые только при проектировании (библиотеки визуальных компонентов Delphi: VCL30.DPL, VCLX30.DPL, VCLDB30.DPL, VCLDBX30.DPL и др.) и во время выполнения приложения. При создании приложения имеются два варианта использования пакетов времени выполнения: включать и не включать пакеты в приложение. Если пакеты включены, то приложение выполняется автономно и не зависит от наличия пакетов, но имеет большой размер. Если пакеты не включены, то приложение выполняется при наличии пакетов (эти пакеты нужно передавать вместе с при­ло­же­ни­ем), но имеет маленький размер. Эти варианты использования пакетов устанавливаются командой Project Options/Packages (рис. 4.5.1).

В списке Design packages приводятся па­ке­ты времени проекти­ро­вания с кнопками Add (добавить новый пакет), Remove (удалить), Edit (из­ме­нить), Components (вывести список компонен­тов выделенного пакета). Отключение неис­поль­зуе­мых пакетов време­ни проек­тирова­ния ускоряет заг­руз­ку Delphi. В группе Run­ti­me packages пере­чис­лен­ны па­ке­­ты времени с кноп­­кой Add (до­­бавить но­вый пакет) и пе­ре­­клю­ча­телем Build with run­time pac­kages (если пе­ре­клю­чатель вклю­чен, то паке­ты вре­мени вы­­пол­не­ния не вк­лю­чаются в при­ложе­ние, ин­аче ‑ вклю­чают­ся). Пе­ре­­клю­чатель De­fault сох­ра­­няет на­стройку в качестве умал­чиваемой.

Рис. 4.5.1. Страница настройки пакетов

Технология связывания и внедрения объектов (OLE)

       
   
 
 

Технология OLE (Object Linking and Embedding) реализуется ком­понентом OLE Container на панели System. Для вставки объекта выпол­няет­ся команда контекстного меню Insert Object, которая выводит окно встав­ки объекта (рис. 4.6.1). Далее следует выбрать тип объекта.

Рис. 4.6.1. Окна вставки нового и готового объекта из файла

 

Если объект создается из готового фай­ла, то указывает­ся имя этого файла, и флажок Link (cвязь) включает режим связывания (включается ссылка на файл) или внедрение объекта (включается содержимое файла). Двойной щелчок по объекту вызывает программу, создавшую этот объект, и становится возможным откорректировать вставленный объект.

Многопоточные приложения

В программе можно создать фрагменты (потоки), которые будут выполняться одновременно. Каждому потоку отводится системой Windоws квант времени на выполнение, по истечении которого осуществляется переход к следующему потоку и т.д. Это создает иллюзию одновременной работы нескольких потоков для однопроцессорного компьютера. Для многопроцессорного компьютера действительно можно распараллелить выполнение программы, что сокращает общее время ее выполнения.

Покажем порядок создания потоков на следующем примере. Созда­дим новое приложение и разместим три области рисования (компо­нент PaintBox) размером 100 100 пикселей (для вывода разноцветных квадратов) и две кнопки для запуска пото­ков (Старт) и завершения вы­полнения при­ложения (Фи­­­­ниш) (рис 4.7.1). Ко­­ман­дой File/New/Thread Object до­­­ба­вим потоковый объ­ект с име­­­­н­ем Potok. Появится мо­­дуль Unit2 c пу­стым опи­са­ни­ем пото­­м­ка класса TThread.

Рис. 4.7.1. Окно выполнения приложения

 

Приведем текст приложения с комментариями (формируемые авто­матически фразы в тексте выделим полужирным курсивом или мно­гото­чием).

unit Unit1; //головной модуль Unit1

Interface

Uses

..., unit2; //подключение модуля Unit2

Type

TForm1 = class(TForm)

...

Public

procedure VivodFigur1; //объявление метода заполнения первой области

procedure VivodFigur2; //объявление метода заполнения второй области

procedure VivodFigur3; //объявление метода заполнения третьей области

procedure VivodFigur(Vf:TCanvas);//объявление метода заполнения области

...

Var

Form1: TForm1;

P1, P2, P3: potok; //объявление переменных для трех потоков

Implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender:TObject); //обработ. кнопки Старт

Begin

{Создание первого потока методом Create. Параметр True указывает, что за­­пуск осуществляется после вызова метода Resume, иначе (False) ‑ сразу после создания потока.}

p1:=potok.Create(true); //создание первого потока

p1.Priority:=tpHighest; {установка приоритета выполнения потока: tpIdle (при простое Windows), tpLowest/tpLower или tpHighest/tpHigher (на два/один пункта ниже или выше нормального), tpNormal (нормальный), tpTimerCritical (наивысший) }

p1.NPotoka:=1; //признак работы первого потока

p2:=potok.Create(true); p2.NPotoka:=2; P2.Priority:=tpNormal; //второй поток p3:=potok.Create(true); p3.NPotoka:=3; P3.Priority:=tpLowest; //третий поток

p1.Resume;p2.Resume;p3.Resume; //запуск 1, 2, 3 потоков

end;

procedure TForm1.VivodFigur(Vf:TCanvas);//вывод квадрата в области Vf

Var f: Trect;//объявление переменной записи с описанием квадрата

Begin Vf.Brush.Style:=bsSolid; //кисть рисует сплошную линию

Vf.Brush.Color:=rgb(random(256),random(256),random(256)); //цвет кисти

f.left:=random(90);f.top:=random(90);//координаты верхнего левого и

f.right:=f.left+10; f.bottom:=f.top+10;//нижнего правого углов квадрата

Vf.rectangle(f); //вывод квадрата в указанную параметром область

end; //конец процедуры

//процедуры вывода квадратов в 1, 2 и 3 области для рисования

procedure TForm1.VivodFigur1; begin VivodFigur(Paintbox1.Canvas); end; procedure TForm1.VivodFigur2; begin VivodFigur(Paintbox2.Canvas); end;

procedure TForm1.VivodFigur3; begin VivodFigur(Paintbox3.Canvas); end; procedure TForm1.Button2Click(Sender:TObject); //обработ. кнопки Финиш

begin Application.Terminate; {завершение работы приложения} end;

end. //конец модуля Unit1

unit Unit2; //модуль Unit2 с описанием потокового объекта Potok

...

Type

Potok = class(TThread) //объявление подкласса потока класса TThread

...

Protected

procedure Execute; override; //объявление метода выполнения потока

public NPotoka: byte; //объявление переменной с номером потока

end;

Implementation

uses unit1; //подключение модуля Unit1

...

procedure potok.Execute; //переопределение метода Execute

begin {Метод Synchronize синхронизует работу всех потоков. Он имеет па­ра­­­­метр ‑ имя метода (без параметров), выводящего квадрат в нужной области}

while not Terminated do //Terminated=True после Application.Terminate

case NPotoka of //анализ текущего номера потока

1: Synchronize(Form1.VivodFigur1); //выполнение первого потока

2: Synchronize(Form1.VivodFigur2); //выполнение второго потока

3: Synchronize(Form1.VivodFigur3); //выполнение третьего потока

end;

end;

end. //конец модуля Unit2

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...