TOPREFERAT.COM.KZ - Қазақша рефераттар

войти на сайт

вход на сайт

Логин: :
Пароль :

Забыл пароль Регистрация

COM – технологиясы курстық жұмыс




COM – технологиясы курстық жұмыс
0
Раздел: Соңғы қосылған | Автор: Админ | Дата: 13-03-2015, 12:05
Загрузок: 1422





 Жоспар

КІРІСПЕ 4

1 НЕГІЗГІ БӨЛІМ 5

1.1 COM – технологиясының негіздері. 5

1.2 Интерфейс 7

1.3 Интерфейстерді жариялау 9

1.4 Интерфейстер және VCL Tcomponent класы 14

1.5 COM – сервер, құрамы және қолдануы 16

1.6 Ағымдар мен бөлмелер 17

2 ПРАКТИКАЛЫҚ БӨЛІМ 18

2.1 COM – серверін ұйымдастыру 18

2.2 COM - серверін тіркеу 21

2.3 Интерфейстердің және параметрлердің берілуі 22

ҚОРЫТЫНДЫ 26

ПАЙДАЛАНЫЛҒАН ӘДЕБИЕТТЕР 27

ҚОСЫМША 28





Жұмыс түрі: Курстық жұмыс
Жұмыс көлемі: 32 бет
Пәні: Соңғы қосылған курстық жұмыстар

-----------------------------------------------------------------------------------

КУРСТЫҚ ЖҰМЫСТЫҢ ҚЫСҚАРТЫЛҒАН МӘТІНІ

КІРІСПЕ 4

1 НЕГІЗГІ БӨЛІМ 5

1.1 COM – технологиясының негіздері. 5
1.2 Интерфейс 7

1.3 Интерфейстерді жариялау 9

1.4 Интерфейстер және VCL Tcomponent класы 14
1.5 COM – сервер, құрамы және қолдануы
1.6 Ағымдар мен бөлмелер 17

2 ПРАКТИКАЛЫҚ БӨЛІМ 18

2.1 COM – серверін ұйымдастыру 18
2.2 COM - серверін тіркеу 21
2.3 Интерфейстердің және параметрлердің берілуі 22
ҚОРЫТЫНДЫ 26

ПАЙДАЛАНЫЛҒАН ӘДЕБИЕТТЕР 27

ҚОСЫМША 28

КІРІСПЕ

COM (Component Object Model – көп компонентті
СОМ – технологиясының екі ерекшелігі бар:

- СОМ – объектілерді құру программалау тіліне
- СОМ-объектілері Windows – қа арналған
1 НЕГІЗГІ БӨЛІМ
1.1 COM – технологиясының негіздері.

COM технологиясы бір программаға (клиент) басқа
СОМ – ның көзқарасы бойынша приложенияның құрамында
MyCalc=class

fx,fy:integer;

public:

procedure SetOperands(x,y:integer)

function Sum:integer;

function Diff:integer;

end;

procedure MyCalc.SetOperands(x,y:integer)

begin

fx:=x; fy:=y;

end;

function MyCalc.Sum:integer;

begin

result:=fx+fy;

end;

function MyCalc.Diff:integer;

begin

result:=fx-fy;

end;

Енді бізде осы кластың элементі болса, онда
unit MyCalc

type

MyCalc=class


var

Calc:MyCalc;

Енді біз оны қайтадан компиляция жасамай -
unit MyCalc

type

MyCalc=class


var Calc:MyCalc;

procedure SetOperands(x,y:integer)

begin

Calc.SetOperands(x,y);

end;

function Sum:integer;

begin

result:= Calc.Sum;

end;

function Diff:integer;

begin

result:= Calс.Diff;

end;

procedure CreateObject;

begin

Calc:=MyCalc.Create;

end;

procedure ReleaseObject;

begin

Calc.Free;

end;

1.2 Интерфейс

Енді интерфейсті толығырақ қарастырайық.Интерфейс программист пен компилятор
Осындай жолмен клиентке объектінің интерфейсін және ол
Интерфейсті жариялаудың құрамына оның әдістерін және қасиеттерін
Интерфейстер мұрагерлене алады.Интерфейстің мұрагерленуі бұл – мұрагерлік
Интерфейс - бұл класс емес.Класс интерфейстің іске
Интерфейс - қатаң түрде типтелген.Клиентте интерфейстің жүзеге
1.3 Интерфейстерді жариялау

Интерфейстерді қолдау үшін Delphi Pascal тілінің
type

IMyInterface = interface

['{412AFF00-5C21-11D4-84DD-C8393F763A13}']

procedure DoSomething(var I: Integer); stdcall;

function DoSomethingAnother(S: String): Boolean;

end;

IMyInterface2 = interface(IMyInterface)

['{412AFF01-5C21-11D4-84DD-C8393F763A13}']

procedure DoAdditional(var I: Integer); stdcall;

end;

Delphi – да GUID жаңа мағынасының генерациясын
COM моделінің негізгі интерфейсі Iunknown болып табылады.Кез
type

IUnknown = interface

['{00000000-0000-0000-C000-000000000046}']

function QueryInterface(const IID: TGUID; out Obj): HResult;
function _AddRef: Integer; stdcall;

function _Release: Integer; stdcall;

end;

Iunknown әдісінің не үшін арналғанын қарастырайық.Соңғы екі
function _AddRef: Integer; stdcall;

Бұл функция интерфейске жасалған сілтемелердің санын бірге
function _Release: Integer; stdcall;

Бұл функция интерфейске жасалынған сілтемелердің санын бірге
Бірінші әдіс интерфейсті іске асырып жатқан класқа
function QueryInterface(const IID: TGUID; out Obj): HResult;
Бұл функция кіру қасиеті ретінде интерфейстің идентификаторын
1. Оған жасалған сілтемені Obj параметріне қайтарады.

2. Қабылданған интерфейстің _AddRef әдісін шақырады.

3. Нолді қайтарады.

Болмаған жағдайда функция қателік кодын E_NOINTERFACE қайтарады.

System.pas модулінде Iunknown – ды және оның
function TObject.GetInterface(const IID: TGUID; out Obj): Boolean;

Егер объект сұраныс жасалған интерфейсті іске асыратын
1. Оған жасалған сілтемені Obj параметріне қайтарады.

2. Қабылданған интерфейстің _AddRef әдісін шақырады.

3. TRUE - ні қайтарады

Болмаған жағдайда функция FALSE – ты қайтарады.Осындай
type

TMyClass = class(TComponent, IMyInterface, IDropTarget)

// Әдістерді іске асыру

end;

TmyClass класы IMyInterface және IdropTarget интерфейстерін
type

ITest = interface

['{61F26D40-5CE9-11D4-84DD-F1B8E3A70313}']

procedure Beep;

end;

TTest = class(TInterfacedObject, ITest)

procedure Beep;

destructor Destroy; override;

end;



procedure TTest.Beep;

begin

Windows.Beep(0,0);

end;

destructor TTest.Destroy;

begin

inherited;

MessageBox(0, 'TTest.Destroy', NIL, 0);

end;

Бұл жерде Ttest класы Itest интерфейсін
procedure TForm1.Button1Click(Sender: TObject);

var

Test: ITest;

begin

Test := TTest.Create;

Test.Beep;

end;

Егер біз интерфейстің жүзеге асырылуын бірден жойғымыз
Code:

var

Test: ITest;

T: TTest;

begin

T := TTest.Create;

Test := T;

Test.Beep;

Test := NIL; // IUnknown._Release автоматты
end;

Iunknown әдісінің автоматты түрде шақырылуына көңіл бөлу
- интерфейске объекттің типін келтірген кезде _AddRef
- интерфейске сұраныс жасап тұрған ауыспалыға басқа
Бір рет объекттен интерфейске сұраныс жасағаннан кейін,
var

Test: ITest;

begin

Test := TInterfacedObject.Create as ITest;

Test.Beep;

end;

Сол уақытта да код:

var

Test: ITest;

begin

Test := TTest.Create as ITest;

Test.Beep;

end;

Компиляциядан өтеді және орындалады.

Енді интерфейстерді жүзеге асыруды толығырақ қарастырайық.

Екі интерфейсті жариялайық:

type

ITest = interface

['{61F26D40-5CE9-11D4-84DD-F1B8E3A70313}']

procedure Beep;

end;

ITest2 = interface

['{61F26D42-5CE9-11D4-84DD-F1B8E3A70313}']

procedure Beep;

end;

Енді осы екі интерфейсті де жүзеге асыратын
TTest2 = class(TInterfacedObject, ITest, ITest2)

procedure Beep1;

procedure Beep2;

procedure ITest.Beep = Beep1;

procedure ITest2.Beep = Beep2;

end;

Көрініп тұрғандай кластың құрамында бірден екі Beep
TTest2 = class(TInterfacedObject, ITest, ITest2)

procedure MyBeep;

procedure ITest.Beep = MyBeep;

procedure ITest2.Beep = MyBeep;

end;

Екі интерфейсті жүзеге асыратын кластың мысалын қарастырайық:
type
TBeeper = class

procedure Beep;

end;

TMessager = class

procedure ShowMessage(const S: String);

end;

TTest3 = class(TInterfacedObject, ITest, IAnotherTest)

private

FBeeper: TBeeper;

FMessager: TMessager;

property Beeper: TBeeper read FBeeper implements ITest;

property Messager: TMessager read FMessager implements IAnotherTest;

public

constructor Create;

destructor Destroy; override;

end;

Интерфейстің жүзеге асырылуын басқа класқа жүктеу үшін
{ TBeeper }

procedure TBeeper.Beep;

begin

Windows.Beep(0,0);

end;

{ TMessager }

procedure TMessager.ShowMessage(const S: String);

begin

MessageBox(0, PChar(S), NIL, 0);

end;

{ TTest3 }

constructor TTest3.Create;

begin

inherited;

FBeeper := TBeeper.Create;

FMessager := TMessager.Create;

end;

destructor TTest3.Destroy;

begin

Кластарды босату

FBeeper.Free;

FMessager.Free;

inherited;

end;

1.4 Интерфейстер және VCL Tcomponent класы

VCL Tcomponent базалық класында Iunknown интерфейсін жүзеге
type

IGetData = interface

['{B5266AE0-5E77-11D4-84DD-9153115ABFC3}']

function Getdata: String;

end;

TForm1 = class(TForm, IGetData)

private

function Getdata: String;

end;



var

I: Integer;

GD: IGetData;

S: String;

begin

S := '';

for I := 0 to Pred(Screen.FormCount) do
if Screen.Forms[I].GetInterface(IGetData, GD) then

S := S + GD.GetData + #13;

end;

ShowMessage(S);

end;

Бұл код приложенияларындағы бүкіл формалардың ішінде IgetData
Жоғарыда қаралған Tcomponent приложениядағы компоненттерді қатаң типтілікті
Мысалы біркелкі құралдар панелі және көптеген әртүрлі
unit ToolbarInterface;

interface

type

TCommandType = (ctSave, ctLoad, ctClear);

TCommandTypes = set of TCommandType;

TSaveType = (stSave, stSaveAS);

IToolBarCommands = interface

['{B5266AE1-5E77-11D4-84DD-9153115ABFC3}']

function SupportedCommands: TCommandTypes;

function Save(AType: TSaveType): Boolean;

procedure Load;

procedure Clear;

end;

implementation

end.

1- суретте. Программаның жұмысы

1.5 COM – сервер, құрамы және қолдануы

COM моделі программалау тілдерінен тәуелсіз көп рет
COM сервер – бұл арнайы түрде безендірілген
DLL түріндегі сервер.

Бұл сервер әрқашанда оны жүзеге асырған (In-Process)
Орындалушы файл ретіндегі сервер.

Бұл сервер басқа приложениялардың сұранысы бойынша COM
1.6 Ағымдар мен бөлмелер

Windows – көптапсырмалы және көпағымды орта.COM –
клиент пен сервер приложенияның әртүрлі ағымдарында немесе
серверге бір уақытта бірнеше клиент сұраныс
STA

Бірағымды бөлмені құрған кезде COM терезе құрады.COM
1.Программист әдістердің синхрондалуы туралы алаңдамаса болады.Ағымдағы әдістің
2.Программист класс өрістерінің рұқсатының синхрондалуы туралы алаңдамаса
STA – ның кемшіліктері:

1.Әдістерді шақырған кездегі синхрондалуға кететін қосымша шығындар.

2.Алдыңғы әдіс өңделіп бітпегенше келесі әдістің өңделуі
MTA

Синхрондалудың автоматты сервисін жүзеге асырмайды және оған
2 ПРАКТИКАЛЫҚ БӨЛІМ

2.1 COM – серверін ұйымдастыру

Delphi COM серверлерін ұйымдастыру үшін кең
library Project1;

uses

ComServ;

exports

DllGetClassObject,

DllCanUnloadNow,

DllRegisterServer,

DllUnregisterServer;

{$R *.RES}

begin

end.

COM – ның дұрыс жұмыс істеуі үшін
ClassName - COM-серверді жүзеге асыратын Delphi класының
Instansing - COM - объектілерді жасау режимін
Internal – объект тек қана осы приложенияның
Threading Model – сервердің ағымдық жобасы.Бұл қасиеттің
Single – ағымдарды қолдау жоқ.Әдетте бұл жоба
Include Type Library – бұл қасиетті орнатқан
Implemented Interfaces – бұл өріске рұқсат етілген
Mark interface Oleautomation – бұл қасиет COM
1. Сервер TtypedComObject – тен мұрагерленуі керек.

2. Интерфейстің бүкіл әдістері safecall ретінде жариялануы
Кітапханасыз серверлер.

Егер осындай кітапханалар Imarshall интерфейстерін жүзеге асыра
unit Unit1;

interface

uses

Windows, ActiveX, Classes, ComObj;

type

TTest = class(TComObject, ITest)

protected

end;

const

Class_Test: TGUID = '{1302FB00-703F-11D4-84DD-825B45DBA617}';

Implementation

uses ComServ;

initialization

TComObjectFactory.Create(ComServer, TTest, Class_Test,

Test', '', ciMultiInstance, tmApartment);

end.

Өз программамызда керекті серверлерді автоматты түрде тіркеу
procedure CheckComServerInstalled(const CLSID: TGUID; const DllName: String);

var

Size: Integer;

DllHandle: THandle;

FileName: String;

begin

Size := MAX_PATH;

SetLength(FileName, Size);

try

if RegQueryValue(HKEY_CLASSES_ROOT,

PChar(Format('CLSID%sInProcServer32',

[GUIDToString(CLSID)])), PChar(FileName), Size) = ERROR_SUCCESS

then

begin

SetLength(FileName, Size);

DllHandle := LoadLibrary(PChar(FileName));

FreeLibrary(DllHandle);

if DllHandle = 0 then begin

RegDeleteKey(HKEY_CLASSES_ROOT,

PChar(Format('CLSID%s',[GUIDToString(CLSID)])));

RegisterComServer(DllName);

end;

end else begin

RegisterComServer(DllName);

end;

except

raise Exception.CreateFmt(%s Тіркей алмаймын.', [DllName]);

end;

end;

Процедура дискте орналасқан тіркеуден өткен файлдың қосымша
2.2 COM - серверін тіркеу

COM клиенттің сұраныс жасаған серверлерін автоматты түрде
2 – сурет. HKEY_CLASSES_ROOTCLSID.
Әр сервердің орналасуын табу және модулін жүктеу
2.3 Интерфейстердің және параметрлердің берілуі

Клиент басқа бөлмеден сұраныс жасалған интерфейсті шақыру
1.Рroxy – ді жүзеге асыру үшін серверде
2.IDL (Interface Definition Language) – де интерфейсті
3.Ole Automation мен үйлесімді сервер жасау.Бұл жағдайда
4.Сонымен қатар интерфейсте Ole Automationмен үйлесімді ғана
COM инициализациясы

COM клиенттері мен серверлері өз талаптары бойынша
const

COINIT_MULTITHREADED =
COINIT_APARTMENTTHREADED = 2; // Apartment
function CoInitializeEx(pvReserved: Pointer;

coInit: Longint): HResult; stdcall;

РvReserved парамерті болашақта қолдануға қалдырылған және NIL
COINIT_APARTMENTTHREADED - ағым үшін STA жасалады.Әр
COINIT_MULTITHREADED - егер MTA ағымдағы процесте жасалынбаған
Егер бөлме сәтті жасалынса,онда функция S_OK қайтарады.COMмен
procedure CoUninitialize; stdcall;

CoInitializeEx – ті шақыру кезінде оған сәйкес
program Project1;

uses

Forms,

ComObj,

ActiveX,

Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}

begin

CoInitFlags := COINIT_MULTITHREADED;

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.Run;

end.

Егер COM ағымда қолданылса, онда мына функциялар
procedure TMyThread.Execute;

begin

CoInitializeEx(NIL, COINIT_MULTITHREADED);



CoUninitialize

end;

COM инициализациясы COM – ға қатысты Windows
DLL алдында өзінің бөлмесін құрастырып қойған ағыммен
Apartment – сервер тек қана STA –
Free – сервер тек қана MTA
3 – сурет.ThreadingModel

Both – сервер MTA - да және
Серверді іске қосу

COM – серверін іске қосу үшін клиент
function CreateComObject(const ClassID: TGUID):
Керекті объектінің параметрі ретінде функция CLSID
var

COMServer: IComServer;



// COM объектісін құрып интерфейсіне сұраныс
:= CreateComObject(IComServer) as IComServer;

//Интерфейспен жұмыс жасаймыз.

ComServer.DoSomething;

// Интерфейсті босатамыз.

ComServer := NIL;

ҚОРЫТЫНДЫ

Осы курстық жұмысымда мен COM – технологиясын
DLL түріндегі сервер.

Бұл сервер әрқашанда оны жүзеге асырған (In-Process)
Орындаушы файл ретіндегі сервер.

Бұл сервер басқа приложениялардың сұранысы бойынша COM
Ол клиенттерге өздері жүзеге асырған объектілерге сұраныс
ПАЙДАЛАНЫЛҒАН ӘДЕБИЕТТЕР

1. Евгений Марков. Программирование в Delphi 7.СПб.:
2. Флёнов М. Е. Программирование в
3. Гофман В. Э. Хомоненко А. Д.
4. Дмитрий О. Delphi. Профессиональное программирование 2006.

5. Delphi 7 для прфессионалов, Марко
6. Delphi 6 Учебный курс.Фаронов В.В. М.:
7. А. Я.Архангельский.Програмирование в Delphi 7. Издательство
8. Владимир Попов. Самоучитель Паскаль и Дельфи.
9. Климова Л.М. Delphi 7. Основы программирования.М.:Кудиц-Образ,2004.
10. Delphi и технология COM, Елманова Н.З.,Трепалин
11. Фаронов В. В. Программирование баз данных
12. Бобровский С. Delphi5: учебный курс.Спб: Питер,2001.
13. Шкрыль А.А. Шкрыль А. -
14. Delphi 5-6 Камардинов О., Шымкент 2002г
15. Никита Культин Delphi в задачах
2003 г.

16. Егоров Е. Лекции по программированию на
17. В. Понамарев, Базы данных в Delphi
18. Понамарев В. COM и ActiveX
19. Стив Тейксейра, Borland Delphi 6. Руководство
20. Сухарев М. В. Основы Delphi. Профессиональный
21. И. Ю. Баженова.Год издания: 2003,Издат.:
ҚОСЫМША

Жаңа форма құрып,оның бетіне 4 – суретте
4 – сурет.Компоненттерді форма бетіне орналастыру.

Содан кейін келесі процедураны енгіземіз:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
ExtCtrls, StdCtrls, Gauges, MyMath, Unit2;

type

TForm1 = class(TForm)

StartBtn: TButton;

Image1: TImage;

ClearBtn: TButton;

GroupBox1: TGroupBox;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Gauge1: TGauge;

FormEd: TEdit;

XStart: TEdit;

XEnd: TEdit;

StepEd: TEdit;

LinesCh: TCheckBox;

MashCh: TCheckBox;

GroupBox2: TGroupBox;

Label5: TLabel;

Label6: TLabel;

XEd: TEdit;

YEd: TEdit;

StartBtn2: TButton;

OpenDialog: TOpenDialog;

SaveDialog: TSaveDialog;

OpenBtn: TButton;

SaveBtn: TButton;

AbBtn: TButton;

procedure StartBtnClick(Sender: TObject);

procedure ClearBtnClick(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

procedure FormCreate(Sender: TObject);

procedure StartBtn2Click(Sender: TObject);

procedure OpenBtnClick(Sender: TObject);

procedure SaveBtnClick(Sender: TObject);

procedure AbBtnClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

var x,y:array of extended;

xmnoj,ymnoj,ymin,ymax,xe,xs,step:extended;

graph:boolean=false;

ram:boolean=false;

f:file of extended;

fn:string;

procedure XYMinMax;

var n:cardinal;

imh,imw:word;

begin

form1.caption:='Graphics - Ïîèñê ìèíèìàëüíûõ è ìàêñèìàëüíûõ çíà÷åíèé
form1.gauge1.maxvalue:=high(y);

if form1.mashch.checked=true then

begin

//åñëè ìàñøòàáèðîâàíèå îòìå÷åíî, òî èùåòñÿ ìíîæèòåëü äëÿ
imh:=form1.image1.height;

imw:=form1.image1.width;

ymax:=y[1];

ymin:=y[1];

for n:=0 to high(y) do

begin

if ymaxif ymin>y[n] then ymin:=y[n];

form1.gauge1.progress:=n;

end;

if ymax-ymin=0 then ymnoj:=1

else ymnoj:=imh/abs(ymax-ymin);

if xe-xs=0 then xmnoj:=1

else xmnoj:=imw/abs(xe-xs);

end else

//à åñëè ìàñøòàáèðîâàíèå íå îòìå÷åíî, òî ìíîæèòåëè
begin

ymnoj:=1;

xmnoj:=1;

end;

form1.caption:='Graphics - Ïîèñê çàâåðøåí';

end;

procedure ris;

var n:cardinal;

imh,imw:word;

begin

form1.caption:='Graphics - Ïîñòðîåíèå ãðàôèêà';

form1.image1.canvas.pen.color:=clwhite;

imh:=form1.image1.height;

imw:=form1.image1.width;

form1.gauge1.maxvalue:=high(x);

//ðèñóåò îñè

with form1.image1.canvas do

begin

pen.style:=psdot;

moveto(0,imh-trunc((-ymin)*ymnoj));

lineto(imw,imh-trunc((-ymin)*ymnoj));

moveto(trunc((-xs)*xmnoj),0);

lineto(trunc((-xs)*xmnoj),imh);

pen.style:=pssolid;

end;

if form1.linesch.checked=true then

begin

//åñëè îòìå÷åíî ñîåäèíåíèå ëèíèÿìè, òî òî÷êè ñîåäèíÿþòñÿ
for n:=0 to high(x)-1 do

begin

with form1.image1.canvas do

begin

moveto(trunc((x[n]-xs)*xmnoj),imh-trunc((y[n]-ymin)*ymnoj));

lineto(trunc((x[n+1]-xs)*xmnoj),imh-trunc((y[n+1]-ymin)*ymnoj));

end;

form1.gauge1.progress:=n;

end;

form1.gauge1.progress:=high(x);

end else //à åñëè íåò, òî íå
for n:=0 to high(x) do

begin

form1.image1.canvas.moveto(trunc((x[n]-xs)*xmnoj),imh-trunc((y[n]-ymin)*ymnoj));

form1.image1.canvas.lineto(trunc((x[n]-xs)*xmnoj)+1,imh-trunc((y[n]-ymin)*ymnoj)+1);

form1.gauge1.progress:=n;

end;

graph:=true;

form1.caption:='Graphics - Ïîñòðîåíèå çàâåðøåíî';

end;

procedure TForm1.StartBtnClick(Sender: TObject);

var n:cardinal;

m:word;

str:string;

label a;

begin

form1.caption:='Graphics - Ðàñ÷åò òî÷åê';

graph:=true;

ram:=true;

xe:=strtofloat(xend.text);

xs:=strtofloat(xstart.text);

if xebegin

str:=xend.text;

xend.text:=xstart.text;

xstart.text:=str;

xe:=xe+xs;

xs:=xe-xs;

xe:=xe-xs;

end;

step:=strtofloat(steped.text);

if (step>abs(xe-xs))or(stepbegin

showmessage('Íåâåðíûé øàã');

exit;

end;

setlength(x,trunc(abs(xe-xs)/step)+1);

setlength(y,trunc(abs(xe-xs)/step)+1);

gauge1.maxvalue:=high(y);

for n:=0 to high(x) do

begin

x[n]:=xs+n*step;

str:=formed.text;

str:=erranalise(str);

a:; //ìåòêà äëÿ îáíîâëåíèÿ äëèííû
for m:=1 to length(str) do

begin

//ïîäñòàíîâêà ÷èñëà âìåñòî x

if ((str[m]='x')or(str[m]='X')){and(x[n]>=0)} then

begin

delete(str,m,1);

insert(floattostr(x[n]),str,m);

goto a;

end;

{if ((str[m]='x')or(str[m]='X'))and(x[n]begin

delete(str,m,1);

insert(floattostr(x[n]),str,m);

str[m]:='~';

goto a;

end;}

end;

//ðåøåíèå ôóíêöèè â òî÷êå x

y[n]:=strtofloat(analise(str));

gauge1.progress:=n;

end;

xyminmax;

ris;

end;

procedure TForm1.ClearBtnClick(Sender: TObject);

begin

with form1.image1.canvas do

begin

brush.color:=clblack;

pen.color:=clblack;

rectangle(0,0,form1.image1.width,form1.image1.height);

end;

graph:=false;

xed.text:='0';

yed.text:='0';

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

finalize(x);

finalize(y);

end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

begin

if graph then

begin

xed.text:=floattostr((x/image1.width)*(xe-xs)+xs);

yed.text:=floattostr(ymax-(y/image1.height)*(ymax-ymin));

end;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

with form1.image1.canvas do

begin

brush.color:=clblack;

pen.color:=clblack;

rectangle(0,0,form1.image1.width,form1.image1.height);

end;

end;

procedure TForm1.StartBtn2Click(Sender: TObject);

begin

xyminmax;

ris;

end;

procedure TForm1.OpenBtnClick(Sender: TObject);

var l:extended;

formula:string;

n:word;

begin

form1.caption:='Graphics - Îòêðûòèå ôàéëà';

if opendialog.execute then

fn:=opendialog.filename;

if fn='' then exit;

setlength(x,0);

setlength(y,0);

assignfile(f,fn);

{$I-}

reset(f);

{$I+}

if ioresult=0 then

begin

finalize(x);

finalize(y);

read(f,l);

formula:='';

for n:=1 to trunc(l) do

begin

read(f,l);

formula:=formula+chr(trunc(l));

end;

read(f,xe,xs,step);

while not eof(f) do

begin

setlength(x,high(x)+2);

setlength(y,high(y)+2);

read(f,x[high(x)],y[high(y)]);

end;

setlength(x,high(x));

setlength(y,high(y));

formed.text:=formula;

xstart.text:=floattostr(xs);

xend.text:=floattostr(xe);

steped.text:=floattostr(step);

end else showmessage('Íå ìîãó îòêðûòü ôàéë');

closefile(f);

form1.caption:='Graphics - Îòêðûòèå çàâåðøåíî';

end;

procedure TForm1.SaveBtnClick(Sender: TObject);

var n:cardinal;

l:extended;

begin

form1.caption:='Graphics - Ñîõðàíåíèå ôàéëà';

if savedialog.execute then

fn:=savedialog.filename;

if fn='' then exit;

l:=0;

for n:=length(fn) downto 1 do

if fn[n]='' then

begin

l:=n;

break;

end;

if pos('.',copy(fn,trunc(l),length(fn)-trunc(l)))=0 then fn:=fn+'.grf';

assignfile(f,fn);

rewrite(f);

l:=length(formed.text);

write(f,l);

for n:=1 to length(formed.text) do

begin

l:=ord(formed.text[n]);

write(f,l);

end;

write(f,xe,xs,step);

for n:=0 to high(x) do

write(f,x[n],y[n]);

closefile(f);

form1.caption:='Graphics - Ñîõðàíåíèå çàâåðøåíî';

end;

procedure TForm1.AbBtnClick(Sender: TObject);

begin

AboutForm.ShowModal;

end;

end.

Енгізіп болғаннан кейін,компиляция жасаймыз.Нәтижесінде 5 – суретте
5 – сурет.Құрылған программаның көрінісі.

5







Написать комментарий
Имя:*
E-Mail:
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Введите код: *


Бұл сайтта Қазақстанның түкпір-түкпірінен жиналған қазақ тіліндегі рефераттар мен курстық және дипломдық жұмыстар ұсынылған. Қазіргі таңда www.topreferat.com.kz сайтының қазақ тіліндегі жұмыстар базасы бүкіл интернеттегі ең үлкен база болып табылады! Біздің базадағы жұмыстар саны 15000-нан асады. Біз бұл жетістікпен тоқтап қалмаймыз! Біз базамызды одан әрі толықтырамыз.
» » COM – технологиясы курстық жұмыс

© 2011-2016 Скачать бесплатно на topreferat.com.kz курсовые, дипломные и рефераты на телефон, на планшет и на компьютер.
При копировании материала активная ссылка на источник обязательна.


Мнение посетителей:
 

После 9 класса Вы:

Пойду в 10, 11, закончу школу полностью
Пойду в Колледж
Пойду в ПТУ
Пойду работать
Снова пойду в 9 класс

 
 
Похожие:
  • Құпия кілтті алгоритмдер курстық жұмыс
  • Құпия кілтті алгоритм курстық жұмыс
  • Тағайындау есебін Т.Е.Венгер әдісімен шешу курстық жұмыс
  • Сырттай оқу бөлімінің жұмысын автоматизациялау курстық жұмыс
  • Мәтіндерді шифрлау курстық жұмыс
  • Математикалық маятник тербелісін моделдеу курстық жұмыс
  • Кластар иерархиясы, мұрагерлік, полиморфизм курстық жұмыс
  • Кітапхана автоматтандырылған жұмыс орнының әзірлемесі курстық жұмыс
  • Деканат деректер қоры курстық жұмыс
  • Банк депозиттері мәліметтер базасы курстық жұмыс
  • Автоматтандырылған қоңырау бағдарламасы курстық жұмыс
  • Delpһі программалау тілі курстық жұмыс
  • Delphi бағдарламалау ортасында тест құрастыру курстық жұмыс
  • Мәліметтер базасындағы футбол командалары реферат
  • Дельфидегі мультимедия реферат
  • АТС жүйесі реферат
  • АЖО еңбектің электрондық биржасы реферат
  • Delphi. Image компоненті және оның кейбір қасиеттері реферат
  • Delphi-дің мультимедиалық мүмкіндіктері реферат
  • Delphi жүйесінде Суретті жина ойынын құрастыру реферат