Практика бөлім техникалық Қызметті дамыту негізгі


Var i:integer; Ss: string



жүктеу 4,91 Mb.
бет67/91
Дата18.03.2022
өлшемі4,91 Mb.
#37853
1   ...   63   64   65   66   67   68   69   70   ...   91
ТРПО готовый

Var i:integer; Ss: string; Begin

ss:=S;


for i:=1 to length(S) do ss[i]:=char(ord(ss[i]) xor key); code:=PChar(ss);

end;

exports Code; end.

Функция кодын түсіндірейік. S жолын және кілттің барлық мәнін алады. Содан кейін, циклде, бастапқы жолдың әрбір таңбасы арнайы НЕМЕСЕ оператор хороны арқылы берілген таңбамен ауыстырылады және осы таңбаның индексі мен Кілт пернесі болады.

Нәтижесінде жол шифрланған. Егер сол функцияны бірдей кілтпен бірнеше рет шифрланған жолға шақырсаңыз, онда шифрлеу

орындалады және функция түпнұсқа жолын қайтарады. Бұл принцип бойынша әдетте мәтінді шифрлау жүргізіледі, содан кейін қосымша шифрлау ережелері қолданылуы мүмкін. Әрбір келесі кейіпкердің кілтін кейбір ережелермен өзгертуге болады. Мысалы, егер шифр операторын оператормен ауыстырсаңыз:

ss[i]:=char(Ord(ss[i]) xor (key + I mod 2));

онда кілт әр екі таңба үшін циклды орындайды.
Кодекстің функциясын S параметрінің және қайтару мағынасының «Жол» ретінде анықталатын болса, іске асыру қарапайым еді. Бұл жағдайда сізге String түріндегі жергілікті айнымалы мәнді енгізіп, жолдарды түрлендірудің қажеті жоқ. Бірақ мұнда Delphi кітапхананың кодын жасаған және бұрын берілген мәтінді орналастырған түсініктемелерді есте сақтау пайдалы. Егер сіз DLL-ке жіберілгіңіз келсе немесе одан жолды алсаңыз, ShareMem-ды пайдалану тарауында көрсетуіңіз керек.

Бұл кітапхана BORLNDMM.DLL интерфейс модулі, мұндай жады ұйымдастыруды қамтамасыз етеді, онда DLL-мен ұзын жолдарды айырбастауға болады. Сонымен қатар, DLL-ді қолданатын қосымшаның негізгі файлында ShareMem модулі бағдарламада бірінші кезекте көрсетіледі. Сондықтан, DLL пайдаланушыларына осындай сұрауларды ұсынудан және PChar сияқты параметрлер арқылы жолдардың берілуін қолданған дұрыс.

DLL процедураларынан және функцияларынан экспортталған тақырыптардан кейін анықталған stdcall спецификациясы параметрлерді беру кезінде белгілі бір конвенцияларды анықтайды; атап айтқанда параметрлерін солдан оңға қарай жүйелеу. Осындай аудару Windows API-де және DLL деп аталатын қосымшаларды жасау үшін қолданылатын бағдарламалау тілдерінде қабылданады.Демек, stdcall іріктеуішін әрдайым пайдалану ұсынылады, әйтпесе тіркелушінің спецификациясы әдепкі бойынша қабылданады. Бұл параметрлердің жылдам алмасуын қамтамасыз етеді, бірақ мұндай DLL тек Pascal-да жазылған қосымшаларда қолданыла алады

DLL-кодындағы барлық функциялар мен рәсімдер мәтіндерінен кейін экспортты жеткізу орналасқан. Ол DLL арқылы экспортталатын процедуралар мен функцияларды, яғни сыртқы бағдарламаға қоңырау шала алатындарды тізеді. Экспортталған функциялардан басқа, DLL-де ішкі қолдануға арналған утилиталарда сипатталған кейбір қосалқы функцияларды сипаттауға болады. Әрине, мұндай коммуникациялар экспорттық ұсынысқа қосылмаған.

Егер экспорттау процедураның немесе функцияның атауын ғана көрсетсе, онда сыртқы бағдарлама оны шақыра алатын атаумен анықталады. Бірақ кілт сөздің атауымен сыртқы қолдануға арналған басқа атауды белгілей аласыз. Мысалы, жоғарыда келтірілген экспорттау туралы мәлімдемені келесідей ауыстырсаңыз:
exports

DoMy name 'My', Code;

онда сыртқы бағдарламаның DoMy функциясы «Менің» атын қолданып қоңырау шалуы керек.

Сыртқы бағдарлама DLL функцияларына және рәсімдеріне аттар емес, индекстер арқылы қоңырау шалуы мүмкін. Көрсеткіштер экспортта тізімделген тегі бойынша автоматты түрде тағайындалады. Индекстер кілт сөз индексін пайдалану арқылы мәжбүр болады. Мысалы:


exports

DoMy index 1,

Code index 2;

Егер индекстермен қоңырау шалу мүмкін болса, индекстерді DLL-ге жаңа функциялар мен рәсімдерді қосқан кезде өзгертпеуі үшін индекстерді ұқсас жолмен орнату керек. Басқа тілдерге және жүйелерге түсініксіз функциялар атауында кейбір таңбалар пайдаланылса, индексті шақыру қажет болуы мүмкін. Шын мәнінде, кілт сөз индексі бар индекстерді көрсету Windows үшін ғана рұқсат етіледі, басқа платформаларда индекстер автоматты түрде жасалады.

Экспорттау туралы ереже DLL-ге бірнеше рет енгізілуі мүмкін және кодтың кез келген жеріне орналастырылады, бірақ оның функциялары мен рәсімдерін жариялағаннан кейін ғана. Егер DLL шамадан тыс жүктелген функциялар болса, олар параметрлер тізімімен қатар экспорттау мәлімдемесіне қосылып, оларды әртүрлі экспортталған аттармен беру керек. Мысалы, кітапханада екі функция сипатталсын:
function Average (X, Y: integer):

real; overload;

stdcall; begin

Average := (X + Y) / 2




жүктеу 4,91 Mb.

Достарыңызбен бөлісу:
1   ...   63   64   65   66   67   68   69   70   ...   91




©g.engime.org 2024
әкімшілігінің қараңыз

    Басты бет
рсетілетін қызмет
халықаралық қаржы
Астана халықаралық
қызмет регламенті
бекіту туралы
туралы ережені
орталығы туралы
субсидиялау мемлекеттік
кеңес туралы
ніндегі кеңес
орталығын басқару
қаржы орталығын
қаржы орталығы
құрамын бекіту
неркәсіптік кешен
міндетті құпия
болуына ерікті
тексерілу мемлекеттік
медициналық тексерілу
құпия медициналық
ерікті анонимді
Бастауыш тәлім
қатысуға жолдамалар
қызметшілері арасындағы
академиялық демалыс
алушыларға академиялық
білім алушыларға
ұйымдарында білім
туралы хабарландыру
конкурс туралы
мемлекеттік қызметшілері
мемлекеттік әкімшілік
органдардың мемлекеттік
мемлекеттік органдардың
барлық мемлекеттік
арналған барлық
орналасуға арналған
лауазымына орналасуға
әкімшілік лауазымына
инфекцияның болуына
жәрдемдесудің белсенді
шараларына қатысуға
саласындағы дайындаушы
ленген қосылған
шегінде бюджетке
салығы шегінде
есептелген қосылған
ұйымдарға есептелген
дайындаушы ұйымдарға
кешен саласындағы
сомасын субсидиялау