9-Laboratoriya: Borland C++ Builderda funksiya va protseduralarga doir dastur tuzish



Download 126,45 Kb.
bet2/2
Sana07.11.2022
Hajmi126,45 Kb.
#861847
1   2
Bog'liq
8-Laboratoriya

YAratilishi
DLL yaratish uchun maxsus Library suzi ishlatiladi.
DLL e’lonlar bulimi Exports suzidan boshlanib, eksport kilinayetgan podprogrammalar ro’yxatini o’z ichiga oladi:

Library MyLibrary;

Function MyFunc (...):...;

begin


end;

Procedure MyProc;

begin

end;
Exports



MyFunc, MyProc;

begin


end.
Podprogramma nomidan tashqari DLL ga uning tartib nomeri joylashtiriladi: birinchi podprogramma nomeri 0, keyingisi - 1 va xokazo. Dasturchi bu indeksatsiyani o’zgartirishi va 0 dan 32767 gacha nomer qo’yishi mumkin:

Expots
MyFunc index 1, MyProc index 2;


Dasturchi eksport qilinayotgan podprogramma uchun tashqi nom berishi mumkin:

Exports
MyFunc index I name 'NEWFUNC';


CHaqirayotgan dastur eksport qilinayotgan podprogramma tashqi nomi yoki indeksi bo’yicha chaqirishi mumkin.

Misol
Misol tariqasida cmplx modulini kuramiz.


Library Cmplx;

uses
SysUtils, Classes;


{$R *.RES}

type
TComplex = record Re, Im: Real;


end;


function AddC(x, y: TComplex): TComplex; stdcall;

begin
Result.Im := x.Im + y.Im;


Result.Re := x.Re + y.Re end;

function SubC(x, y: TComplex): TComplex;

stdcall;

begin
Result.Im := x.Im - y.Im;


Result.Re := x.Re - y.Re

end;


function MulC(x, u: TComplex): TComplex;

stdcall;


begin
Result.Re := x.Re * y.Re + x.Im * y.Im;
Result.Im := x.Re * y.Im - x.Im * y.Re

end;


function DivC(x, y: TComplex): TComplex;

stdcall;


var
z: Real;

begin
z := sqr(y.Re) + sqr(y.Im);


try
Result.Re := (x.Re * y.Re + x.Im * y.Im)/z;


Result.Im := (x.Re * y.Im - x.Im * y.Re)/z

except
Result.Re := le+309;


Result.Im := le+309

end


end;

Exports
AddC index 1 name 'ADDC' resident,


SubC index 2,
MulC index 3,
DivC index 4;

begin


end.
Bu yerda stdcall bu DLL ga Delphi dan boshqa tillardan murojaat qilishga imkon beradi. Agar bibliotekaga fakat Delphi tilidagi dasturdan murojaat qilinsa bu so’zning keragi yo’q.
Podprogrammalarga murojaat qilish uchun ularni kuyidagicha e’lon qilish lozim:

Procedure MyProc; External 'MyDLL';


Agar indeks bo’yicha chaqirish lozim bulsa:

Procedure MyProc; External 'MyDLL' index 2;


Bundan tashqari dasturchi tashqi nomni o’zgartirishi xam mumkin:

Procedure MyProc; External 'MyDLL' Name 'ExtName';



Foydalanish

Statik yuklash
Dasturda Smpix bibliotekasi quyidagicha e’lon qilinishi lozim.

type
TComplex = record Re, Im: Real;


end;


function ADDC(x, y: TComplex): TComplex; stdcall; External 'Cmplx' ;

function SubC(x, y: TComplex): TComplex; stdcall; External 'Cmplx' ;

function MulC(x, y: TComplex): TComplex; stdcall; External 'Cmplx' ;

function DivC(x, y: TComplex): TComplex; stdcall; External 'Cmplx';



Interfeysli modul
DLL-podprogrammalarni chaqirishda yozuv kabi murakkab turdagi ma’lumotlarni uzatishga to’g’ri kelishi mumkin. Agar biror DLL ga kup murojaat qilinsa murakkab tur e’lon kilingan interfeysli moduldan foydalanish qulaydir. Masalan:

Unit Complx;

Interface

type
TComplex = record Re, Im: Real;


end;


function AddC(x, y: TComplex): TComplex; stdcall;

External 'Cmplx' index 1;

function SubC(x, y: TComplex): TComplex; stdcall;

External 'Cmplx' index 2;

function MulC(x, y: TComplex): TComplex; stdcall;

External 'Cmplx' index 3;

function DivC(x, y: TComplex): TComplex; stdcall;

External 'Cmplx' index 4;

Implementation end.
Boshqa tilda yozilgan DLL protseduralariga murojaat qilinganda ularning tashqi nomi Delphi qoidasiga to’g’ri kelmasligi mumkin. Masalan C++ tili identifikatorlarda “@” simvolidan foydalanishga ruxsat beradi. Bu xolda Delphi qoidasiga mos nom berib name suzidan sung asl nomini ko’rsatish kerak. Masalan:
function MyFunction: WordBool; stdcall;
external 'MyDLL' name '_MyFunction@12'
Fayllar bilan ishlash funksiya va protseduralari
Kiritiladigan va chiqariladigan ma’lumotlar soni ko’p miqdorda bo’lsa ularni faylda saqlash dasturda qulaylik tug’diradi. Bu ma’lumotlar oddiy matn (tekst) fayllarida saqlanadi. Fayl o’zgaruvchisi dastur bosh qismida e’lon qilinadi, ya’ni
Type f=text;
Var

fx:f;
bu yerda f -fayl tipi, oddiy matn faylni bildiradi;


fx-fayl o’zgaruvchisi.
Kerakli fayldan ma’lumotlarni o’qishga tayyorlash uchun Assign va Reset funksiyalari ishlatiladi.
Topshiriqlar:

  1. Dastur ishini tuxtatuvchi va mavjud xatolar tugrisida ma’lumot beruvchi protsedurani kurib chiqing :

  2. 2. Yuqoridagi C: diskdagi AA katalogdagi AB fayldagi ma’lumotlarni A va B massivlarga o’qib shu massiv mos elementlarini qo’shib S massivni tashkil qiling va A,B,C massivlarini ABC nomli faylga joylashtiring.

  3. C: diskdagi AA katalogdagi AB fayldagi ma’lumotlarni o’qib A va B massivlarga joylashtiring. Fayl ma’lumotlari strukturasi quyidagicha.

Download 126,45 Kb.

Do'stlaringiz bilan baham:
1   2




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2025
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish