Автор работы: Пользователь скрыл имя, 06 Апреля 2014 в 10:25, курсовая работа
Бағдарламалау технологиясының дамуына байланысты көптеген адамдар өздерінің бағдарламаларының мүмкіндіктерін жоғарлату қателіктерімен соқтығысып жатады. Осы менің курстық жұмысым осы сұраққа арналған, яғни Borland Delphi тілінде DLL – ді бағдарламауға. Сонымен қоса, DLL кітапханаларын пайдалану туралы сұрақтарды қарастырғанда, біз басқа DLL – дан импорттауды да қарастырып кетеміз.
implementation
{$R *.dfm}
Function Average(A,B,C:real):real; far; external 'MYDLL' ;
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption:=FloatToStr(
StrToFloat(Edit2.Text),
end;
DLL – мен байланыс орнатылған жерге назар аударыңыз. Ол үшін implementation бөлімінде функцияны хабарлау енгізіледі. Ол компиляторға параметрлер түрлерін және функцияларды білуге көмектеседі. Хабарлағаннан кейін far шақыру түрі көрсетіледі және external (сыртқы) сөзінен кейін DLL кітапхана аты. Бұл кітапхана табылуы үшін, өзіңіздің мәтіндік қосымшаңызды кітапхана орналасқан каталогқа сақтаңыз. Қосымшаны жүктегеннен кейін DLL-мен байланыс жақсы жасап тұрғанына көзіңіз жетеді.
3.6-сурет.MyDLL DLL проектісі
3.7-сурет. MyDLL.dll кітапханасын Delphi – де шақыру үшін формада орналастырылған компоненттер
3.8-сурет. MyDLL.dll кітапханасын Delphi – де қолдану
Бұл курстық жоба барысында динамикалық кітапханаларды құрып, оларды Delphi-де шақыруға тағы бір мысал қарастырып кетейік, бұл мысалда біз LoadLibrary() кітапханасы негізінде Total Commander – ді автоматты түрде шақырады және барлық қол жетімді функцияларды GetProcAddress(). Арқылы жүктейді.
Алдыңғы мысалда айтып өткендей DLL Wizard арқылы динамикалық кітапхана құру терезесін ашамыз. Бұл терезе ашылғаннан кейін жобаны баптау Project|Oprions менюін ашамыз. «Application» бетінен «Target file extension» деген жолға плагин файлы аты үшін «wcx» кеңейтпесін береміз. «Version Info» бетінен TC Plugins Manager утилитасы бетінен ақпараттарды қарау үшін Include version information in project –ке жалауша қоямыз. «Compiler» бетінен Code generation | Optimization жалаушасын алып тастаймыз да «Runtime errors» және «Debugging»жолдарының «Use Debug DCUs» басқаларының баріне жалауша қоямыз. Бұл Delphi жөндеушісін және Delphi-ден плагиндарды тексеру үшін қажет.
Run|Parameters жүктеу параметрлері менюін таңдаңыз. «Local» бетінен «Host Application» жолына totalcmd.exe –ге жол көрсетеміз.
Бұл мысалды орындап, компиляторға жібергеннен кейін бізге Total Commander файлдық менеджері ашылады.
library Project1;
uses
SysUtils,
Classes,
WCXHEAD in 'WCXHEAD.pas',
Main in 'Main.pas';
{$E wcx}
{$R *.res}
begin
end.
3.9-сурет. Project1.dll кітапханасының құрылған суреті
3.10-сурет. Project1.dll кітапханасын компиляторға жібергеннен кейінгі ашылатын терезе
Жаңадан DLL проекті құрамыз. Бұл проектіге FirstDllProject деген ат береміз. Енді FirstDllProject.dpr проектісінің файлын ашамыз. Енді осы кітапханамызға Summ деген атпен бір функция енгіземіз. Бұл функцияның бүтін санды екі параметрі болады. А функция осы сандардың суммасын шығарып отырады. Келесі программа кодында осы Summ функциясын кітапханада құрылғаны көрсетілген:
library FirstDllProject;
uses
SysUtils,
Classes;
function Summ(X,Y:Integer):Integer; StdCall;
begin
Result:=X+Y;
end;
exports Summ;
{$R *.res}
begin
end.
Енді осы кітапханадағы функцияны қолданатын бағдарлама құрайық. Ол үшін жаңа проекті құрамыз. Формаға тек қана жалғыз Button компоненттін қоямыз.
FirstDllProject.DLL кітапханасын Delphi
– де пайдаланғандағы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
function Summ(X,Y:Integer):Integer;
implementation
function Summ; external 'FirstDllProject.DLL' name 'Summ';
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
r:Integer;
begin
r:=Summ(10,34);
Application.MessageBox(PChar(
end;
end.
3.11-сурет. FirstDllProject.dll динамикалық кітапханасындағы функцияларды Delphi – да жүзеге асыру
Менің курстық жұмысымның тақырыбы «Динамикалық модульге қосу және құру принциптері» болғандықтан, мен курстық жұмыста динамикалық кітапхана туралы жалпы түсінік бере кеттім. Динамикалық кітапханалар жайындағы жалпы түсінік берумен қатар, динамикалық кітапханаларды Delphi ортасында қалай құру керектігі туралы айтылып кетті.
Бұл курстық жұмысым үш бөлімнен тұрады. Екі бөлім теория болады да бір бөлім тәжірибелік бөлім болып келеді.
Теориялық бөлімде Delphi ортасындағы DLL –ді бағдарламалаудың көптеген қасиеттері жайында айтылып та кетті. DLL проектісі және интерфейстік модуль жайында да, сонымен қоса жалпы модульдер жайында бірінші бөлімде қарастырылып кетті.
Тәжірибелік бөлімнің мазмұны туралы айтатын болсақ, тәжірибелік бөлімде бес программа мысалы көрсетілген. Бұл бес бағдарлама қосымшаларда көрсетілген.
Динамикалық кітапхана жайында курстық жұмыс барысында толық түсіндірдім. Динамикалық кітапханаға қорытынды бере кететін болсақ, алдымен біз динамикалық кітахананың қандай аймақтарда қолданылатыны айта кеттім.
Динамикалық кітапханалардың жалпылама қолданылатын жерлерін жалпылама айта кеттім, енді динамикалық кітапхана туралы курстық жұмыс барысында айта кеттім. Сонымен қоса, бұл жұмыста Borland Delphi программалау ортасында DLL құру жайында және құрылған динамикалық кітапханаларды құрған мысалдарын көрсетіп кетім.
Динамикалық кітапхана модулдері Windows - те кең қолданылатын бір бірімен динамикалық байланысқан DLL (Dynamic-Link Libraries) кітапханаларды құруға арналған. DLL-дер туралы алда тағыда қарастырып кетім.