Standard беті.
Delphi-ді оқып-үйрену негізінен осы компоненттер палитрасы бетінен басталады. Бұл бетте Windows –тың : басты және қалқыма-лы менюлері, батырмалары, бір жолдық және көп жолдық редак-торлары, ауыстырып қосқыштары, белгілері, тізімдері және одан да басқа жиі қолданылатын компоненттері сияқты стандартты интерфейстік элементтері орналасқан.
Енді осы бетте қамтылған компоненттердің қызметтеріне жеке-жеке тоқталайық.
Пикто-
грамма
|
Компонент
аты
|
Компоненттің атқаратын қызметі
|
|
MainMenu
|
Бағдарламаның бас менюі. Компонент күрделң иерархиялық менюлерді құруға және оларды іске қосуға мүмкіндік береді.
|
|
PopupMenu
|
Қалқымалы меню. Ол әдетте маустың оң жақ батырмасын басқанда пайда болады.
|
|
Label
|
Белгі. Бұл статикалық мәтін түріндегі қысқа хабарламаларды орналастыру үшін қолданылады.
|
|
Edit
|
Енгізу жолы. Ол пайдаланушының бір жолдық мәтіндік ақпаратты енгізуіне арналған.
|
|
Memo
|
Көп жолдық мәтіндік редактор. Ол пайдаланушының пішімдеу мүмкіндігі жоқ көп жолдық мәтінді енгізіп, оны бейнелеуі үшін пайдаланылады.
|
|
Button
|
Командалық батырма. Бағдарламада осы компоненттің onclick оқиғасы өңдеушісінің көмегімен команданы жүзеге асыру үшін қолданады.
|
|
CheckBox
|
Тәуелсіз ауыстырып қосқыш. Оның маусты шерткенде ауысып отыратын true және false мәндері бар Checked (белгіленген) қасиеті пайдаланылады.
|
|
RadioButton
|
Тәуелді ауыстырып қосқыш. Ол бірнеше нұсқадан біреуін ғана таңдау үшін қолданылады. Сол мақсатта компонент кем дегенде бір немесе бірнеше сондай компоненттермен бір топқа бірігеді. Компонентті шерткенде ол ерекшеленеді және бұрын таңдалған ерекшелеу алынып тасталады. Мұның да Checked қасиеті бар.
|
|
ListBox
|
Таңдау тізімі. Ұсынылған нұсқалар(опциялар) тізімінен тұрады және ағымдағы таңдауды бақылауға мүмкіндік береді.
|
|
ComboBox
|
Таңдаудың аралас тізімі. Edit пен ListBox компоненттерін бірге пайдалануды қарастырады.
|
|
ScrollBar
|
Айналдыру жолақтары. Ол бағдарлама терезесіне тұтасынан симаған бөліктерін қарауға арналған басқарушы компоненттердің тік және көлденең жолақтарынан тұрады.
|
|
GroupBox
|
Компонентердің топтық контейнері. Бұл мағынасы бойынша байланысқан бірнеше компоненттерді біріктіру үшін қолданылады.
|
|
RadioGroup
|
Тәуелді ауыстырып қосқыштар тобы. Оның өзара байланысқан бірнеше тәуелді ауыстырып қосқыштарды іске қосуға арналған қасиеттері бар.
|
|
Panel
|
Панель/Тақта. Бұл GroupBox сияқты бірнеше компоненттерді біріктіруге арналған. Оның ішкі және сыртқы жиектері арқылы «батырылып» не «көтеріліп» тұрғандығын бейнелеу мүмкіндіктері болады.
|
|
ActionList
|
Әрекеттер тізімі. Пайдаланушының бір типтес: меню, батырмалар және т.с.сияқты басқарушы элементтер тобының біреуін таңдауымен байланысты әрекетіне бағдарламаның бір орталықтан жауап беру қызметін атқарады.
|
Additional беті.
Бұл бетте Windows – та бағдарлама дайындауға өте қажет: қосалқы қасиеттері бар батырмалар, кестелер, кескіндерді орналастыруға арналған компоненттері және т.б.бар қосымша компоненттер орналастырылған.
Енді осы бетте қамтылған компоненттердің қызметтеріне жеке-жеке тоқталайық.
Пикто-
грамма
|
Компонент
аты
|
Компоненттің атқаратын қызметі
|
|
BitBtn
|
Командалық батырма. Стандартты Button батырмасынан айырмашылығы, мұнда пиктограмманы бейнелеу мүмкіндігі бар.
|
|
SpedButton
|
Пиктографиялық батырма. Бас менюдің опцияларына тез қатынас жасау үшін қолданылады.
|
|
StringGrid
|
Жолдар кестесі. Бұл компоненттің мәтіндік ақпаратты кесте түрінде бейнелеуге қуатты мүмкіндігі бар.
|
|
DrawGrid
|
Кескіндер кестесі. Бұл компонент кескінді кесте түрінде бейнелеу үшін қолданылады.
|
|
Image
|
Сурет. Кескінді, оның ішінде пиктограммалар мен метафайлдарды бейнелеуге арналған компонент.
|
|
Shape
|
Фигура. Осы компонент көмегімен Пішінге фигуралар: тіктөртбұрышты, эллипсті, дөңгелекті кірістіруге болады.
|
|
Bevel
|
Жиек. Пішіннің жекелеген бөліктерін үш өлшемді қоршаумен және жолақтармен ерекшелеу қызметін атқарады.
|
|
ScrollBox
|
Айналдыру жолақтары бар тақта. Мұның тақтадан айырмашылығы сол, егер онда орналасқан компоненттер оның шекараларымен қиып алынса, оған айналдыру жолақтары автоматты түрде кірістіріледі.
|
|
CheckListBox
|
Көп түрлі таңдау тізімі. Мұның стандартты ListBox компонентінен айырмашылығы, әрбір опция жанында бірнеше опцияны бірден таңдауды жеңілдететін тәуелсіз CheckBox типті ауыстырып қосқыштың бар болуында.
|
|
Splitter
|
Шекара. Бұл көрінетін екі компонент аралығынан шекара жасап және пайдаланушының оларды орын ауыстыруына мүмкіндік береді.
|
|
StaticText
|
Статикалық мәтін. Мұның стандартты Label компонентінен айырмасы, мәтінді қоршауға алуға немесе оны Пішіннің «батырылған» бөлігі түрінде ерекшелеуге мүмкіндік беретін жеке Windows – терезесінің болуында.
|
|
Chart
|
Диаграмма. Бұл компонент мәліметтерді графикалық түрде бейнелеу үшін арнайы тақталар жасауды жеңілдетеді.
|
Win32 беті.
Осы бет 32 разрядты Windows – тың 95/98/NT ОЖ арналған интерфейс элементтерін жұмыс істетін компоненттерді қамтиды. Бұл компоненттер Windows – тың соңғы версияларының стилистикасымен үйлеседі.
Енді осы бетте қамтылған компоненттердің қызметтеріне жеке-жеке тоқталайық.
Пикто-
грамма
|
Компонент
аты
|
Компоненттің атқаратын қызметі
|
|
TabControl
|
Астарлар жиынтығы. Әр астар жазбасы және/немесе мәтіні бар өріс түрінде болады. Мұнда астарларды таңдау бағдарлама арқылы танылады және ол компонент терезесіндегілерді басқару үшін қолданылады.
|
|
PageControl
|
Астарлары бар тақталар жиынтығы. Әр тақтаның өз интерфейс элементтерінің жиынтығы болады және ол онымен байланысты астарды шерту арқылы таңдалады.
|
|
ImageList
|
Суреттер жиынтығы. Мұны бірдей өлшемді бірнеше суреттерді сақтауға араналған қойма деп қарауға болады.
|
|
RichEdit
|
Пішімделген мәтіннің көпжолдық редакторы. Оның Memo компонентінен айырмашылығы, бұл мәтіннің қаріп, түс, туралау және т.б. (RTF пішімі) сипаттамаларын өзгерте алады.
|
|
TrackBar
|
Реттегіш. Бағдарламадағы кейбір шамалардың мәндерін басқару үшін қолданады. Мыс, осының көмегімен мультимедиалық құрылғылардың дыбысын өзгерту ыңғайлы.
|
|
ProgressBar
|
Процесс индикаторы. Осы компоненттің көмегімен біршама ұзақ процестің орындалу барысын, мыс, мәліметтердің көшірілуін бейнелеуге болады.
|
|
UpDown
|
Цифрлық реттегіш. Бұл компоненттің екі батырмасы осы компонентпен байланысты сандық шамаларды арттыру немесе кеміту қызметін атқарады.
|
|
HotKey
|
Басқарушы перне. Компонент F1, CTRL+Shift және т.б. басқарушы кодтарды енгізуге арналған.
|
|
Animate
|
Мультипликатор. Бұл қозғалмалы кескіндерді(бейнеклиптерді) бейнелеуге арналған , бірақ оны дыбыспен әрлей алмайды. ProgressBar компоненті сияқты, негізінен ұзақ процестің жүруі кезінде қолданылады.
|
|
DateTimePicker
|
Уақыт/мерзім селекторы. Компонент уақытты немесе мерзімді енгізуге немесе оларды бейнелеуге арналған.
|
|
MonthCalendar
|
Күнтізбе. Бұл күнтізбені бейнелеу және мерзімді немесе оның аралығын таңдау үшін қызмет етеді.
|
|
TreeView
|
Бұтақталған таңдау. Пиктограммалардың бұтақ тәріздес құрылымымен байланысқан жиынтығы болып табылады.Әдетте бұл каталог құрылымын және басқа соған ұқсас өзара иерархиялық түрде байланысқан элементтерді қарап шығуда пайдаланылады.
|
|
ListView
|
Пиктограммалар тақтасы. Бірнеше пиктограммаларды қарап, олардың ішінен қажеттісін таңдауды ұйымдастырады. Компонент пиктограммаларды тік немесе көлденең қатарларға орналастыра алады және оларды үлкен немесе кіші масштабпен көрсетуге мүмкіндігі бар.
|
|
HeaderControl
|
Басқарушы тақырып. Бұл жазбалары бар аралас секциялар қатарына бөлінген көлденең немесе тік жолақтар. Секциялардың өлшемін бағдарламамен жұмыс кезінде өзгертуге болады. Мұны әдетте, әр түрлі кестелердегі бағандар мен жолдардың өлшемін өзгерту үшін пайдаланады.
|
|
StatusBar
|
Статус тақтасы. Редакциялау терезесінде түрлі қызметтік ақпараттарды орналастыруға арналған. Оған мыс, Word мәтіндік редакторы терезесі қоршауының төменгі бөлігінде орналасқан қалып-күй жолы жатады.
|
|
ToolBar
|
Саймандар тақтасы. Бұл компонент BitBtn командалық батырмасы үшін контейнер қызметін атқарады және ол өз өлшемін оған батырмаларды қосқанда немесе оны жойғанда автоматты түрде өзгерте алады.
|
|
CoolBar
|
Саймандар тақтасы. Мұның ToolBar –дан айырмашылығы, бұл Edit, ListBox, ComboBox және т.с.с. Windows –тың стандартты интерфейстік компоненттерін орналастыруға арналған контейнер ретінде пайдаланылады.
|
|
PageScroller
|
Айналма тақта. Бұл енсіз саймандар тақтасын орналастыруға арналған. Қажет кезде тақта шетіне айналдыру жолақтарын құрады.
|
System беті.
Мұнда әр түрлі қызмет атқаруға арналған компоненттер (мыс, Timer – кезкелеген бағдарламадағы ең маңызды компонент), оның ішінде Windows – тың стандартты технологияларын қуаттайтын бағдарлама аралық деректер алмасуды ұйымдастыратын OLE және DDE компоненттері де берілген.
Енді осы бетте қамтылған компоненттердің қызметтеріне жеке-жеке тоқталайық.
Пикто-
грамма
|
Компонент
аты
|
Компоненттің атқаратын қызметі
|
|
Timer
|
Таймер. Нақты уақыт интервалын есептеуге арналған компонент. Ол 55 миллисекунд – тен кіші аралықта өңдей алмайды.
|
|
PaintBox
|
Суретке арналған терезе. Графикалық кескіндерді салуға арналған тікбұрышты аймақты құрады.
|
|
MediaPlayer
|
Мультимедиалық ойнатқыш. Осы компонент көмегімен түрлі мультимедиалық құрылғылар жұмысын басқаруға болады.
|
|
OleContainer
|
OLE-контейнер. Байланысқан немесе ендірілген обьектілерді қабылдаушы қызметін атқарады.
|
|
DDEClientConv
|
DDE- байланыс. Бұл DDEClientItem –мен бірге DDE-байланыста клиенттік бағдарлама құру үшін пайдаланылады..
|
|
DDEClientItem
|
DDE- тақырып. Клиенттік қолданбада DDE-байланыстың тақырыбын анықтайды.
|
|
DDEServerConv
|
DDE- байланыс. Бұл DDEServerItem –мен бірге DDE-байланыста серверлік бағдарлама құру үшін пайдаланылады.
|
|
DDEServerItem
|
DDE- тақырып. Серверлік қолданбада DDE-байланыстың тақырыбын анықтайды.
|
3. Delphi компоненттері – визуалды жобалаудың негізі.
Бос пішінді мазмұнды ететін – Delphi-дің компоненттері. Олар бас терезедегі палитра компоненттерінің тиісті астарларында орналасқан. Delphi-дің негізгі барлық компоненттері жоғарыда айтылған 4 астарда: Standard, Additional, Win32, System жатыр.
Осылардың пиктограммасына маустың нұсқағышын апарсақ, олардың аттары қалқып көрінеді. Осы компоненттерді Пішінге апару үшін, оны мауспен шертіп, сонан соң Пішіннің ол қойылатын орнын шертеді.Бұдан әрі оларды маус арқылы Пішін ішінде «қажетті интерфейсті» құрастыруға еркін тасымалдауға болады. Егер Сіз компонентті Пішінге көшіргіңіз келмесе, онда сол астардағы компоненттен бас тарту бағдаршасын шертсеңіз, белгілеу алып тасталады.
Delphi-де басқа бағдарламалау тілдеріндегі сияқты, барлық компоненттер қарастырылған анықтамалықтар бар. Мұнда біз сол компоненттердің ең негізгі қасиеттеріне және олардың жұмысына тоқталатын боламыз.
Ең алдымен, мәтінді бейнелеу компонентінен бастайық. Ол үшін жаңа жоба құрайық(File –» New –» Application), сосын Пішінге Label, Edit, Memo, Button компоненттерін тасымалдайық. Мауспен тиісті компоненттерді бір рет шерту немесе Tab пернесін басу арқылы Обьектілер инспекторындағы олардың қасиеттерін ашуға болады. Мәтінмен жұмыс істеуге арналған осы компоненттердің мынадай қасиеттері бар:
Width – компоненттің енін белгілейді;
Height – компоненттің биіктігін белгілейді;
Left – пішіннің сол жақ шетінен қашықтығын көрсетеді;
Top - пішіннің жоғарғы жақ шетінен қашықтығын көрсетеді.
Компоненттер Пішінге орнатылғаннан бастап, олардың қасиеті мәнге ие болады. Компоненттерді мауспен пішіндегі жобалаған орнына қойған соң, обьектілер инспекторы арқылы оның өлшемдері мен координаттарын нақтылауға болады. Осы әрекеттерді бағдарламалау арқылы да орындауға болатынын алда көретін боламыз. Бұл компоненттердің бейнелік көрінісін олардың мына қасиеттері ұйымдастырады:
Label Button үшін - Caption,
Edit үшін – Text,
Memo үшін – Lines.
Пішінді «құрастыру» кезінде компоненттердің осы қасиеттеріне кезкелген мәнді беруге болады, тіпті оған мән беру арқылы компонентті көрінбейтін ете аласыз. Жоғалған компонентті инспектордағы тізімін шерту арқылы оның қасиетін көрсеңіз, сол кезде ол пішінде белгіленіп тұрады.
Енді бағдарламаны іске қосып көрейік(ол үшін жасыл бағдаршаны не F9 –ды басыңыз). Сонда сіз компоненттердің, яғни Label – пішінде жазба не белгі жазуға, Button – батырма қызметін атқаруға, Edit – жол енгізуге, Memo – мәтіндік редактор ретінде жұмыс істеуге дайын екенін көресіз.
Қазір біз шағын бағдарлама жазып көрейік. Әуелі жаңа жоба ашайық (File –»New –» Application) . Енді мына әрекеттерді орындайық:
Пішінге Edit(енгізу жолы) компонентін орналастырыңыз да, оның Text қасиетін тазалаңыз.
Пішінге Button(батырма) компонентін орнатып, оның Caption қасиетіне, мыс: «бейнесін көрсет» деп жазыңыз.
Пішінге Label – ді енгізіп, оның Font қасиетінен қаріп өлшемін(24) және түсін таңдаңыз. Оның Caption қасиетін тазалаңыз.
Құрған батырманы екі рет шертіңіз.
Сонда бізге Delphi дайындаған батырманы басуға арналған модуль терезесі ашылады.
Осы код терезесінде Label1 деп жазыңыз(нүктеден соң тоқтаңыз, сонда көмексөз көрінеді). Сонан соң «С» пернесін бассаңыз, сонда Caption жолы белгіленеді. Delphi біз не енгізер екен деп күтіп тұр. Әрі қарай ештеңе жазбай, Enter-ді басыңыз. Сонда Label1.Caption деген жазу шықты. Мұндағы нүкте обьекті мен оның қасиетін бір-бірінен ажыратып тұр. Обьектіні қалай атау керек? Әрине атымен. Ол обьектінің барлық компоненттері үшін бірдей – Name қасиетімен беріледі және бұл инспекторлар обьектісінде орналасқан. Әрі қарай:
Label1 обьектісінің Caption қасиетіне мән меншіктейік. Ол үшін «:=» - меншіктеу операторын пайдаланамыз. Сонда «Label1.Caption:=» шығады, енді не жазатыныңды ойланайық...
Әрине, мұнда Edit1- дің Text қасиеті : “Edit1.Text” мәнін қабылдайды.
Әр команда соңына (;) символы қойылуы қажет.
Сонда begin мен end арасына: Label1.Caption:=Edit1.Text; жазылады. Енді осыны сақтап, F9 пернесін басайық. Міне шағын бағдарлама құрылып болды. Нәтижесін көріңіз.
Ендігі бағдарламалар бұдан күрделілеу болады. Егер бағдарламада қате болып, ол орындалмаса не істеу керек? Ол кезде CTRL + ALT + DEL пернелер тобын орындап немесе ең оңайы қателер туралы ескерту терезесінде OK-ны басып, содан соң бас терезе менюінде Delphi Run –» Program Reset немесе Ctrl+F2 командаларын орындаған жөн.
4. Delphi оқиғалары.
Бұрыннан білетініміздей, Windows операциялық жүйесі көпміндетті, яғни бір уақытта бірнеше әрекетті қатар орындай алады. Біз бағдарлама терезесінде батырманы шерткенде, Windows жүйесі нақ осы бағдарламада бір оқиға болғандығын анықтап, оған хабарлама жолдайды. Ал біздің бағдарлама оған тиісінше жауап әрекет жасауы керек. Ол үшін біз бағдарламалаушы ретінде осы оқиғаны орындату кодын жазамыз. Сонда Windows үшін бағдарлама құрылымы әрқайсысы белгілі бір нақты оқиғаны өңдеуге жауапты және сол оқиға болған кезде ғана шақырылатын кіші бағдарламалар жиынтығынан тұрады екен.
Ал Delphi бізді Windows – тан хабарлама алу қажеттілігінен құтқарып, ол қызметті бір өзі атқарады. Мұнда әр компоненттің өзінше әсер ете алатын біршама көп оқиғалар жиынтығы бар. Бағдарламалаушы бағдарламада қай оқиғаны өңдеу қажеттігін өзі анықтайды.
Енді осының алдында құрылған жобаны ашайық. Edit1 компонентін шертейік. Ол обьектілер инспекторында көрінеді. Сонда Инспектордан екі астарды көресіз: Properties(Қасиеттер) және Events(Оқиғалар). Events астарына ауысайық.
Қажетті оқиғаның өңдеуші бағдарламасын құру үшін, ол бойынша маусты екі рет шертеміз. Ал егер қалып кеткен тізімді ашатын болсақ, онда осы компонентке жарамды дайын өңдеуіштер бар болып шығады. Сонымен бір өңдеуіш бірнеше компоненттің оқиғаларын өңдеуге шақыруы мүмкін.
Алдыңғы бағдарламаны Пішіндегі мәтін бірден енгізілу бойына көрінетіндей етіп өзгертейік. Edit1 – ге мән енгізген кезде ондағы Text қасиеті өзгеріп, онда жаңа әріп пайда болады. Ол үшін onchange(change- ағ. өзгеру) оқиғасын пайдаланайық. Сонда:
onchange бойынша екі рет шертейік, сол кезде біз жаңа құрған өңдеуіштің ішінде тұрамыз.
Label1 – дің Caption қасиетіне Edit1 – дің Text қасиетінің мәнін меншіктейік: Label1.Caption:=Edit1.Text; немесе оны алдыңғы бағдарламадан көшіріп, осыған жазайық.
Бағдарламаны іске қосайық. Барлығы жұмыс істеп тұрғанын көреміз.
Енді onclick оқиғасын қарастырайық. Бұл оқиға енгізу жолын бұрын енгізілген символдардан тазарту үшін қолданылады. Мұнда өзіңіз байқағаныңыздай, Delphi-де жол – бірлік тырнақшаға( ' ) алынып жазылуы қажет.
Ал жолдағы символдар тазару үшін өңдеуіштің Text қасиетіне бос жол меншіктелуі керек, яғни оның арасында бос орын да болмауы қажет. Сонда ол былай жазылады:
Edit1.Text:= '';
Бұл мақсатта Edit компонентінің осыған арналған Clear (ағ.тазалау) әдісін қолдануға болады, ол мынау: Edit1.Clear;
Бұл жерде біз бағдарламаны пайдаланушының жағдайын ескеруіміз керек. Біздің дайындаған бағдарламаны пайдаланып, ол мәтінді енгізерде бірдеңені өзгерткісі келіп, оны мауспен шерткенде, онда сол жердегінің барлығы өшіріледі.
Мұндай кезде Edit – тің onEnter оқиғасын қолданған жөн. Сол кезде сіз енген бойда, компонент мән енгізуге дайын тұрады немесе ол үшін арнайы батырманы және оның onclick оқиғасын пайдаланған қолайлы.
Сонымен әр компоненттің өз оқиғалар жиынтығы болатыны белгілі. Біз солардың
Onchange
Onclick
onEnter деген түрлерімен таныстық.
Әрбір бейнелік компонентте болатын мына маңызды оқиғалар төмендегі жағдайларда пайда болады:
onExit – компонент енгізу фокусын жоғалтқан сәтте;
ondblclick – компонентті мауспен екі рет шерткен сәтте;
onkeydown – пернетақта пернесін, ол төменгі қалыпта тұрғанда басқан сәтте;
onkeyup – пернетақта пернесін, ол жоғарғы қалыпта тұрғанда босатқан сәтте;
onkeypress – пернетақта пернесін басқан сәтте;
onmousdown – маус батырмасын, ол төменгі қалыпта тұрғанда басқан сәтте;
onmouseup – маус батырмасын, ол жоғарғы қалыпта тұрғанда босатқан сәтте;
onMouseMove – маус нұсқағышын компонент үстінде жылжытқан сәтте.
Кезкелген бағдарламамен жұмыс жасарда, оның ең маңызды компоненті – Пішіннің басты оқиғасы – onCreate ескерілуі қажет. Оқиға пішіннің экранда көрінуінен бұрын пайда болады. Бұл оқиға, мыс, Пішіннің экрандағы өлшемдері мен орнын баптауға болатындай етіп бағдарлама элементтерінің тиісті қасиеттерін беру үшін қолданылады. Егер сіз көрінбейтін бағдарлама құрғыңыз келсе, онда пішіннің ені(Width) мен биіктігін(Height) нөлге(0) теңеуге болады. Бірақ оны жобалау кезінде жасасақ, онда экран көрінбей жұмыс істеуге кедергі болады. Сондықтан оны onCreate оқиғасы бойынша:
Form1.Width:=0;
Form1.Height:=0; орындайды.
Енді Пішіннің тақырыбын да көрсетпеуге болады, ол үшін обьектілер инспекторында BorderStyle параметрін None – ге тең етіп алса болғаны. Сол кезде пішін тіпті көрінбейді, оның есептер тақтасында тек белгісі ғана шығып тұрады.
Delphi тілі. Айнымалылар, тұрақтылар және
олардың типтері.
Delphi тіліндегі барлық мәліметтер оны қолданғанға дейін сипатталуы тиіс. Компилятор солай болғанда ғана мәліметтердің бағдарламада сипатталуына сәйкес қолданылғандығын бақылап, қатенің алдын алады. Delphi тілінде кезкелген шама тұрақты немесе айнымалы мәнге ие. Оның аты(идентификаторы) латын әріптерінің тізбегінен, цифрлар мен астын сызу таңбасынан тұрады, олар тек цифрдан басталмауы тиіс. Мұнда символдар регистрінің ролі болмайды.
Бағдарламада мәліметтерді сипаттау орны логикалық блок – begin/end – тен тыс орналасады. Модульде implementation түйінді сөзінің алдында сипаттау блогы жазылады:
var
Form1: TForm1;
Міне осы жерде, келесі жолдан бастап айнымалы мен тұрақтыларды жариялаған қолайлы. Айнымалылар былай сипатталады:
Var айнымалы_аты: айнымалы_типі;
Мұнда var – түйінді сөз. Атау ретінде кезкелген бұдан бұрын сипатталмаған және тілдің түйінді немесе қосалқы сөздері болып табылмайтын идентификаторды алуға болады.
Бір типті бірнеше айнымалыларды сипаттау қажет болғанда, оны былай жазады:
Var A,B,C: Integer;
Егер бірнеше сипаттауды бірінен соң бірін жазғанда, бір ғана var түйінді сөзін қолдануға болады:
var A,B: integer;
C,D: String;
Тұрақты шамаларды, басқаша константа деп атайды. Бағдарламада, әдетте, сандар мен жолдарды тікелей де пайдалануға болады: 3.1415 немесе ‘Бұл ПИ санының мәні'. Алайда тұрақтыларды идентификаторға меншіктеген ыңғайлы, ол үшін const түйінді сөзі қолданылып, былай жазылады:
Const pi=3.1415;
BelgiPi:String=’Бұл Пи санының мәні’;
Айтпақшы, Pi тұрақтысы Delphi – де берілген, сондықтан оны қолданғанда 3.1415 санын тұрақтыға меншіктесе болғаны.
Енді Delphi – де қолданылатын мәліметтер типін қарастырайық. Оларға – жолдар мен сандар жатады. Жол деп бірлік тырнақшаға алынып жазылған символдар тізбегін айтады. Мыс, 'бұл мәтіндік жол' деген сияқты. Егер мәтінде тырнақша белгісі болған жағдайда, онда оны екі мәрте жазу қажет, мыс: ‘бұл’’- бірлік тырнақша белгісі’.
Жол бос болуы да мүмкін, онда ол былай белгіленеді: ‘’.
Жол, көп таралған жолдық тип – String –пен сипатталады. Осы типті жол көлемі 2Гб-қа дейінгі символдардан тұра алады. Жолды шекті мөлшермен шектеу қажет болғанда, онда символдар санын String-тен кейін тік жақшаға алып жазады, мыс: String[50].
Жеке символдар типі Char түрінде сипатталып, бірлік тырнақшаға алынып жазылады: ‘ү’ . Ал мынадай экранда бейнелеуге болмайтын, мыс, жол соңын білдіретін символды(#13), жолды тасымалдау символын(#10), олардың алдында # таңбасы бар сандық коды(ANSI) түрінде жазады, мыс: #0. Delphi-де нөл – терминделген жолға жатады. Мұндай жолдардағы символдар есебі нөлден басталып, коды нөл болатын (#0) символымен аяқталады. Бұл жолдардың типі – Pchar.
Сандар бүтін және бөлшек сандар болып бөлінеді. Мына кестеде бүтін сандардың стандартты типтері мен олардың тиісінше қабылдай алатын мәндерінің аралығы көрсетілген:
Integer
|
-2147483648 .. +2147483647
|
Cardinal
|
0 .. 4294967295
|
Shortint
|
-128 .. +127
|
Smallint
|
-32768 .. +32767
|
Int64
|
-263 .. +263-1
|
Byte
|
0 .. +255
|
Word
|
0 .. +65535
|
Бүтін сандар типінің бағдарламада қолдануға ыңғайлысы – ол Integer. Ал оның басқа типтері мәліметтер компьютер жадынан барынша аз орын алуы үшін қолданылады. Бөлшек садардың ондық нүктемен ажыратылған бөлшек бөлігі бар. Оларды соңында сол жақ бөлігін 10-ның неше дәрежесіне көбейту керектігін көрсететін саны бар е(немесе Е) символымен жазуға болады.
Төменгі кестеде бөлшек сандардың стандартты типтері мен олардың қабылдай алатын мәндерінің аралығы берілген:
Real
|
5*10-324 .. 1.7*10308
|
Real48
|
2.9*10-39 .. 1.7*1038
|
Singl
|
1.5*10-45 .. 3.4*1038
|
Double
|
5*10-324 .. 1.7*10308
|
Extended
|
3.6*10-4951 .. 1.1*104932-1
|
Comp
|
-263 .. +263-1
|
Currency
|
922337203685477.5807
|
Бағдарламада қолдануға барынша ыңғайлы тип – Real. Оған шамалас типке Double жатады, бірақ оның алда өзгеруі де мүмкін. Currency(финанстық) типінен басқа бөлшек сандар жуықтап есептеледі.
Мәліметтердің ендігі бір типіне логикалық Boolean типі жатады. Ол True(ақиқат) және False(жалған) деген екі мәнді ғана қабылдайды. Мұнда True > False болады.
Енді жоғарыда айтылған компоненттерді, олардың қасиеттері мен оқиғаларын пайдаланып, өз айнымалыларын енгізу арқылы есептеу жүргізетіндей бағдарлама құрастыруға болады. Мұнда есептелген мәнді экранға қалай шығарамыз, соны қарастырайық. Ол үшін бұл мәнді қандай да бір Text не Caption қасиеті бар компонентке орналастыру қажет. Оған мысал ретінде Label мен Edit компоненттерін, тіпті Caption қасиеті арқылы ақпаратты шығаруға болатын Пішінді де қолдануға болар еді. Былай жазылған мына бағдарлама:
var A, B, C: Integer ;
begin
A := 5 ;
B := 10 ;
C := A+B ;
Label1.Caption := C ;
end ;
қате шақырар еді, өйткені мұндағы Text және Caption қасиеттері String типті, ал айнымалылар – Integer типті болып тұр. Мұндай бағдарлама есептеу жүргізе алмайды. Бұдан шығатын жол бар, ол үшін С айнымалысының мәнін жолдық мәнге түрлендіру қажет. Delphi-дің мұны орындайтын IntToStr ішкі функциясы бар. Сонда қате шақырған бағдарлама мына түрде жазылар еді:
Label1.Capton:=IntToStr(C);
Бірақ бұл бағдарлама 15 санын ғана көрсетеді.
Енді Edit компонентін пайдаланып көрейік. Енгізілген сандар осы компоненттердің Text қасиеттерінде жатады. Пішінге Edit-тің екі, бір Label компонентін және батырманы басқанда есептеу жүргізетін Button батырмасын орналастырайық. Edit1 және Edit2 компоненттеріне қосындыны табу үшін сандар енгізейік. Сонда ол бағдарлама былай жазылады:
var A, B, C: Integer;
begin
A := Edit1.Text;
B := Edit2.Text;
C := A+B;
Label1.Caption := IntToStr(C);
end ;
Бұл да жоғарыдағы сияқты, қате шақырады, себебі мұнда да А мен В айнымалылары сандық Integer типті болса, ал Text қасиеті – String типті. Осы қатені жөндеуге StrToInt функциясы көмектесе алады, өйткені ол мәтінді бүтін санға түрлендіреді. Сонда А мен В айнымалысына мән меншіктеу операторлары былай жазылады:
A:=StrToInt(Edit1.Text);
B:=StrToInt(Edit2.Text);
Мұнда біз А,В,С айнымалыларын түсінуге оңай болу үшін пайдаландық. Осы бағдарлама операторларын бір жолға былай жазған өте ыңғайлы:
Label1.Caption:=IntToStr(StrToInt(Edit1.Text)+StrToInt(Edit2.Text));
Осыған ұқсас Real типті жылжымалы үтірлі нақты сандарды жолдық айнымалыға(FloatToStr) және оны кері түрлендіретін (StrToFloat) функциялары бар. Көбінесе Delphi-де Real типті есептеулер нәтижесінде үтірден соң ұзын «құйрық» болады. Мұны қалай шектеуге болатынын «Жолдық айнымалымен жұмыс» тақырыбында қарастырамыз.
6. Мәліметтердің өздік және құрылымдық типтері.
Мәліметтердің сандар мен жолдардан басқа күрделірек қосымша типтерін пайдаланбай жақсы бағдарлама құру мүмкін емес. Delphi-де бағдарламалаушы өз мақсатына жету үшін мәліметтердің өздік (өзі қалаған) типін құра алады.
Бағдарламаға мәліметтердің жаңа типін енгізу үшін Type түйінді сөзін қолданатын оператор енгізіледі:
Type типтің_атауы = типтің_сипатталуы
Мәліметтердің саналатын типі-бұл мәндер аралығы жай ғана реттелген идентификаторлардан тұратын тип. Бұл типті мәндерді сандармен емес, сөзбен сипаттау неғұрлым көрнекілеу болатын мәліметтер типін сипаттауға қолданған тиімді болады. Ол идентификаторларға кіретін әр атау тұрақты болып саналады да, бір-бірінен үтірмен бөлініп, жалпы атау тізімі жай жақшаға алынып жазылады. Мыс, Қазақстанның кейбір футбол командаларын сипаттайтын типті былай жазып көрсетуге болады:
Type FootballKazTeam=(Kairat, Kaisar, Tobyl, Ordabasy, Esyl);
Var MyTeam: FootballKazTeam;
Begin
MyTeam:=Kairat;
End;
Жалпы саналатын типке мәндерінің тізбектілігі мен олардың үлкендігін анықтауға болатын барлық типтерді жатқызуға болады. Саналатын типке мыналар жатады:
барлық бүтін санды типтер;
символдық типтер(Char);
логикалық типтер.
Мәліметтердің құрылымдық типтері кезкелген бағдарламада қолданылады. Оларға:
массивтер(жиымдар);
жазбалар;
жиындар
түріндегі типтер жатады.
Жиым – элементтеріне нөмірі немесе индексі бойынша қатынас жасалатын мәліметтердің құрылымдық типі. Жиымның барлық элементтері бір типтес болады. Ол былай сипатталады:
Type жиым_типінің_аты = array[аралығы] of элемент_типі
Мұндағы аралығы – жиымның жоғарғы және төменгі шекарасын, яғни ондағы элементтер санын анықтайды. Жиымға қатынас жасалғанда ізделінді индекс көрсетілген аралықта жатуы тиіс. Мыс, бүтін типті 100 элементтен тұратын жиым былайша сипатталады:
Type TMyArray=array[1..100] of Integer;
Мұндағы TmyArray типті айнымалыны былай сипаттауға болады:
Var A,B: TMyArray;
Енді типті меншіктеп жатпай-ақ, оны жиым ретінде бірден сипаттауға мүмкіндік туды:
Var A,B:array[1..100] of integer;
Сонымен жиым элементіне қатынас жасау үшін жиымның аты мен элементтің индексі тік жақшаға алынып көрсетілуі керек екен. Жиымның индексі ретінде мәндері оның сипаттамасында көрсетілген аралықта жататындай санды, идентификаторды немесе өрнекті алуға болады. Мыс:
var N: Integer;
begin
N := 65;
A[5] := 101;
A[N] := 165;
A[N+3] := 200;
B := A;
end;
Кейде жиымның жоғарғы шегін білу қажеттігі туады. Delphi – дің High функциясы жиымның жоғарғы шегі болып табылатын санды қайтарады.
Бағдарламадағы B:=A өрнегі В жиымының әр элементі сондай индексті А жиымының элементіне тең екендігін білдіреді. Мұндай меншіктеу айнымалылар қандай да бір атаулы тип арқылы сипатталса ған немесе бір тізімде болса ғана мүмкін болады. Мына жағдайда:
var A: array[1..100] of String;
B: array[1..100] of String;
ондай меншіктеу қолданылмайды, бірақ мұнда элементтерді бір-бірден B[1]:=A[2]; және т.б. меншіктеуге мүмкіндік бар.
Жиымдар бірнеше өлшемді бола алады.
Мыс, бізге 4 баған, 5 жолдан құралған кесте берілсін делік.
Бұл кесте екі өлшемді жиым түрінде былай сипатталады:
Type MyKeste=array[1..4,1..5] of integer;
Var X:= MyKeste;
Y:=Integer;
Begin
Y:=X[4,3];
End;
Осы бағдарлама орындалғанда, жиымның 4-бағаны мен 3-жолының қиылысында орналасқан Y элементінің мәні 12 – ге тең деген жауап аламыз.
Көпөлшемді жиымды, мыс, екі өлшемді жиымды жиымның жиымы ретінде сипаттауға болады:
Type TMyArray=array[1..4] of array[1..5] of integer;
Нәтижесі жоғарыдағы мысалға ұқсас.
Жоғарыда сипатталған элементтер саны өзгермейтін статикалық жиым деп аталатын жиымдардан басқа, Delphi-де элементтерін бағдарлама талабына сәйкес өзгертуге мүмкіндігі бар динамикалық жиымдарды қолдана алады. Ол жиымдармен жұмыс аздап жайлау жүргенмен бұл компьютер ресурсын үнемдеуге жағдай жасайды.
Динамикалық жиымдар статикалық сияқты, бірақ онда индекстер аралығы көрсетілмей сипатталады:
Type TDinArray=array of integer;
Var A:TDinArray;
Динамикалық жиым құрылып болғанда, онда бірде бір элемент болмайды. Бағдарламада қажетті өлшем арнаулы SetLength процедурасы арқылы беріледі.
Сонда 100 элементтен тұратын жиым былай жазылар еді:
Begin
SetLength(A,100);
End;
Динамикалық жиымның төменгі шегі әрқашан нөлге тең. Содан да А жиымның индексі 0-ден 99-ға дейін өзгере алады.
Көпөлшемді динамикалық жиымдар жиымдардың жиымы ретінде сипатталады. Мыс, екі өлшемді жиым былай сипатталады:
Type T3DinArray=array of array of integer;
Var A: T3DinArray;
Бағдарламада алдымен бірінші өлшем(бағандар саны) беріледі:
SetLength(A,3);
Содан соң екінші өлшем әрбір үш баған бойынша беріледі:
SetLength(A[0],3);
SetLength(A[1],2);
SetLength(A[2],1);
|
Міне осылай үшбұрышты матрица құрылады:
|
A00 A10 A20
A01 A12
A02
|
Динамикалық жиымға бөлінген жадыны босату үшін тұтас жиымға nil мәнін меншіктеу керек: A:=nil; Delphi-де nil түйінді сөзі мәннің жоқтығын білдіреді.
Жазбалар өте маңызды әрі ыңғайлы құрал болып табылады. Оның көмегімен арнайы технологияны қолданбай-ақ мәліметтердің өзіндік деректер қорын құруға болады.
Жазбалар деп, мәліметтердің әр элементтің өз аты мен типі бар құрылымдық түрін айтады. Жазбалар элементін басқаша өріс деп те атайды. Олар былай сипатталады:
Type жазба_типінің_аты=record
өріс_аты : өріс_типі;
...
өріс_аты : өріс_типі;
end;
Бірыңғай типті өріс аттарын, айнымалыларды сипаттағандай, арасын үтірмен бөліп бір жолда көрсетуге болады. Жазба өрісіне қатынас жасау үшін, алдымен жазбаның аты, нүкте, сонан соң өріс аты жазылады. Мыс, бір мекеменің қызметкерлері жайлы деректерді, жазбаның мына типімен ұйымдастыруға болады:
Type TKyzm=record
Tegy,Aty,Aka:string; Tj:integer; Jo:string;
Ka:string;
End;
Var Kyzm:TKyzm;
Begin
Kyzm.Tegy:=’Adet’;
Kyzm.Aty:=’Muratbek’;
Kyzm.Aka:=’Bexaruly’;
Kyzm.Tj:=1942;
Kyzm.Jo:=’114 орта мектеп’;
Kyzm.Ka:=’бағдарламалаушы’;
End;
Енді осы деректерді оның типін алдынала TKyzm түрінде белгілеп, файлға жазамыз. Міне деректер қоры дайын болды.
Delphi-де файлдық айнымалы деген ұғым бар, ол былай сипатталады:
VFile:file of файл_типі; Мұнда тип ретінде кезкелген шектеулі тип пайдаланылады.
Бұл айнымалыға String типін қолдана алмаймыз, себебі ол айнымалыға 2 ГБ-қа дейін мән беруге мүмкіндік жасайды. Бірақ оны String[N] деп шектеу арқылы(N-символдар саны) қолдануға болады. Жоғарыда алынған мысалдағы Tkyzm типін былайша сипаттауға болар еді:
Type TKyzm=record
Tegy,Aty,Aka:string[20] ;
Tj:integer;
Jo:string[15];
Ka:string[15];
End;
Міне осы типті айнымалы жадыдан нақты орын алады да, оны файл түрінде жазуға болады. Бұл туралы біз кейінірек тоқталатын боламыз.
Жиындар деп, бір атауға біріктірілген элементтер тобын айтады. Оның элементтерін басқалармен салыстыра отырып, олардың осы жиынға тиістілігін анықтауға болады. Бір жиындағы элементтер саны 256-дан аспауы тиіс. Жиын былай сипатталады:
Type жиын_аты=set of жиынның_мәндер_аралығы;
Мәндер аралығы ретінде элементтерінің саны 256-дан аспайтын кезкелген типті көрсетуге болады. Мыс: type TmySet=set of 0..255;
Type TMySet=set of Byte;
Бағдарламада жиынның нақты мәндері тік жақшаға алынған элементтер тізбесі түрінде беріледі. Мұнда элементтердің аралығын көрсету мүмкіндігі бар:
var MySet : TMySet;
begin
MySet:=[1, 3 .. 7, 9];
end;
Қандай да бір мән жиын элементі екендігін тексеру үшін in операторы шартты оператормен бірге қолданылады:
var Key : Char;
Str : String;
begin
if Key in ['0' .. '9', '+', '-'] then
Str:='Math';
end;
7. Өрнектер және операторлар.
Delphi-де өрнектердің мына түрлері қолданылады:
математикалық өрнектер
логикалық өрнектер
тіркестік өрнектер және оның мұнан басқалары да бар.
Математикалық өрнектер. Мұнда меншіктеу(:=), қосу(+), азайту(-), көбейту(*), бөлу(/), бүтін сандық бөлу(div), бөлуден қалдық табу(mod) амалдары пайдаланылады. Өрнектермен амалдар орындауда амалдардың орындалу басымдықтарын ескеру өте маңызды, сонда ғана есептеу дұрыс нәтиже береді. Сондықтан бағдарламалаушының осы басымдықтарды білуі тиіс.
Мыс, мына өрнектің нәтижесі : 20-6/2+7*4 56 емес, 45-ке тең, себебі өрнекте ең алдымен көбейту мен бөлу амалдары бірінші кезекте, сонан соң қосу, азайту амалдары ретімен орындалуы керек. Амалдардың орындалуында жай жақша басымдыққа ие, яғни жақшаға алынған өрнек алдымен орындалады. Мыс, мына өрнектің мәні: ((20-6)/2+7)*4 енді 56-ға тең болады. Бұл өрнекте әуелі 1-жақша(14), сонан соң екінші үлкен жақша(14), сосын қалған амал(56) орындалады.
Логикалық өрнектер.
Бұл өрнектер логикалық Boolean типті амалдарда қарастырылады. Олар шартты операторларда қолданылады.
Операторлар. Бағдарламада алгоритмдік логиканы жүзеге асыратын қолданба жасау үшін оның жұмыс барысын басқаратын құрал қажет. Ол құрал түрлі шарттарға байланысты операторлардың орындалу ретін өзгерте алады және көбірек қайталанатын үзінділер жұмысын тиімді ұйымдастыруға көмектеседі. Кезкелген алгоритмді мына операторлар көмегімен кодтауға болатыны математикалық тәсілмен дәлелденген. Олар:
меншіктеу операторы
шартты оператор
Меншіктеу операторымен(:=) осының алдында таныстық. Ол оператор былай жұмыс істейді: мұнда оператордың сол жағында тұрған айнымалы, оң жақтағы шамаға теңеседі және олардың типтері сәйкес болуы керек. Сөйтіп оң жағындағы өрнекте оның сол жағындағы шаманы пайдалануға болады. Осы айтылғандарды математикада қолдануға болмайды. Ал бағдарламалауда бұл жадыда тұрған бастапқы мән алынып, оған есептеу жүргізілетінін, сонан соң ол ұяшықтағы бұрынғы мән өшіріліп, соның орнына соңғы мән енгізілетінін білдіреді. Мыс:
var M,N : Integer;
begin
M:=2;
N:=10;
M:=M*N-N/M;
end;
Бағдарламаның басында М-ге меншіктелген мән – 2 болса, ал бағдарлама орындалғанда оған 15 мәні меншіктеліп тұр.
Шартты оператор. Осы оператордың көмегімен қандай да бір шарттардың орындалуына қарай операторлардың орындалу ретін өзгертуге мүмкіндік туады. Шартты оператор былай жазылады:
If шарт then 1-әрекет else 2-әрекет;
Мұндағы if(егер), then(онда) және else(әйтпесе) – қызметші сөздер, ал 1-әрекет немесе 2-әрекет – операторлардың орындалу нәтижесін білдіретін операторлар. Мұнда шарт ақиқат болса 1-әрекет, жалған болса 2-әрекет орындалады. Шарт логикалық әрекетке жатады. Бұл жерде өрнектер мәні(оның ішінде логикалық та) салыстырылады, ол үшін Boolean типті мәнді қайтаратын функциялар шақырылады және ол мәндерді логикалық амалдармен қоса қолдана алады.
Амал
таңбасы
|
Амалдың
атауы
|
Логикалық амалдарды мына :
and (логикалық ЖӘНЕ)
or (логикалық НЕМЕСЕ)
xor (жоққа шығарушы НЕМЕСЕ) байланыстырушы амалдармен бірге пайдалануға болады.
Мәліметтердің кейбір типтері үшін қосымша амалдар бар. Мыс, жиын үшін in операторы – мәннің сол жиынға тиістілігін тексереді. K жиыны берілсін :
K := [1, 4, 7, 10, 13, 16] ;
мұнда 1 in K өрнегі ақиқат (true мәніне ие), ал 8 in K өрнегі жалған (false мәніне ие), өйткені 1 К жиынына тиісті, ал 8 мәні К-да жатпайды.
|
=
|
тең
|
<>
|
тең емес
|
>
|
үлкен
|
<
|
кіші
|
>=
|
үлкен не тең
|
<=
|
кіші не тең
|
not
|
логикалық ЕМЕС – теріске шығару
|
ЖӘНЕ логикалық амалының орындалу нәтижесі екі операнд бірдей ақиқат болғанда ғана true –ге тең. НЕМЕСЕ логикалық амалының орындалу нәтижесі әйтеуір бір операнд ақиқат болғанда true мәнге ие болады. Егер операндтар бір-біріне тең болмаса, онда жоққа шығарушы НЕМЕСЕ амалының нәтижесі ақиқат болады.
Цикл операторлары әрекеттердің бір ғана ізбен бірнеше рет қайталануын ұйымдастыруға мүмкіндік береді. Delphi-де бұл мақсатты орындайтын үш оператор бар. Олар:
циклдің «жай» операторы
циклдің шартты операторы
қайталаудың шартты операторы.
Циклдің «жай» операторы, оның қайталау саны алдынала белгілі болған жағдайда қолданылады және ол былай жазылады:
For санауыш:=1-өрнек to 2-өрнек do әрекет;
Санауыш-бұл цикл операторы орналасқан логикалық блоктың алдында жариялануға тиісті айнымалы және оның типі саналатын типтердің біріне, әдетте Integer-ге тиесілі болуы тиіс. Мұндағы 1-өрнек пен 2-өрнек тұрақты немесе идентификатор бола алады. Әрекет – Delphi-дің бір немесе бірнеше операторларын білдіреді. Оператор жұмысы басталғанда айнымалы-санауыш 1-өрнектің мәнін қабылдайды. Егер мұнда санауыш мәні 2-өрнек мәнінен кем не оған тең болса, онда әрекет құрамына енетін операторлар орындалады. Міне осы бір цикл «жай» деп саналады. Содан соң айнымалы-санауыш ағымдағы келесі мәнді қабылдап, жаңа цикл басталады, яғни ол 2-өрнекпен санауышты салыстырады, әрекетті орындайды. Осылайша айнымалы-санауыштың мәні 2-өрнек мәнінен асқанға дейін цикл жалғаса береді.
Цикл операторының жұмысында айнымалы-санауыш өсу орнына кемитін жағдай да болуы мүмкін. Ондай жағдайда оператор былай жазылады:
For санауыш:=1-өрнек downto 2-өрнек do әрекет;
Мұнда 1-өрнектің мәні 2-өрнектен үлкен не оған тең болуы тиіс.
Циклдің қайталану саны алдынала белгісіз болған жағдай үшін мына түрде жазылатын циклдің шартты операторын пайдаланған жөн:
While шарт do
цикл денесі;
Бұл цикл шарт ақиқат болып тұрған кездің барлығында орындалады. Мұнда шарт бірден жалған болса, онда цикл денесі бір рет те орындалмайды. Мұндай циклдің шарты мен циклдің аяқталуын жазуда өте мұқият болу керек, әйтпесе while циклі шексіз рет қайталанып, бағдарламаның орындалмай тұрып қалуына әкеліп соқтырады.
Қайталаудың шартты операторы алдымен цикл денесін орындайды, сонан соң барып шарттың орындалуын тексереді. Бұл оператор былай жазылады:
Repeat
Цикл денесі
Until шарт;
Циклдің бұл түрі оның ең болмағанда бір рет орындалуын ұйымдастырады. Мұнда цикл шарт ақиқатқа айналғанша орындалуын жалғастырады және цикл денесі логикалық begin/end жақшасына алынбай жазылады. Цикл денесінің бас-аяғы repeat және until түйінді сөздерімен анықталады.
Цикл операторларымен қоса арнайы командалар да қолданылады, олар:
циклді үзу командасы
циклді жалғастыру командасы
Бірінші команда цикл денесі операторларының орындалуы кезінде оны аяқтау қажет болғанда пайдаланылады және ол былай жазылады: Break;
Осы команда орындалғанда басқару цикл операторынан кейінгі бірінші операторға беріледі.
Continue; командасы цикл денесіндегі басқа операторларды аттап өтіп бірден циклдің орындалуын жалғастыруға мүмкіндік жасайды.
Бағдарламаның орындалу ретін өзгертуге мүмкіндік беретін тағы бір оператор бар, ол көшу операторы: goto белгі;
Мұнда белгі ретінде кезкелген жарамды идентификатор немесе 0 мен 9999 аралығынан алынған сандар пайдаланылады. Белгіні алдынала айнымалыларды сипаттау бөлімінде var көмегімен емес, label түйінді сөзі арқылы сипаттау керек:
Label белгі; немесе label белгілер тізімі;
Бағдарлама бойынша көшу жоғары және төмен қарай да орындала береді. Мұнда белгі көшу жүргізілетін оператордан қос нүкте(:) арқылы ажыратылады. Көшу операторының қолданылу мысалын қарастырайық:
var X, Y: Integer;
label A, B;
begin
A: X:=5 ;
. . .
бағдарлама операторлары
goto B;
. . .
B: Y:=25;
goto A;
end;
Осы мысалдағы бағдарламаны аяқтауға тиіс end операторы ешқашан орындалмайды, мұнда бағдарлама көшу операторларының жұмысы нәтижесінде шексіз қайталана береді. Сондықтан goto операторын программистер көп қолданбауға тырысады. Бағдарламада оның орнына шартты не циклдік операторларды пайдалану әлдеқайда тиімді.
Goto операторын тек бірнеше қабаттасқан циклдерден шығу кезінде қолданған дұрыс, әйтпесе одан шығу үшін бірнеше рет break командаларын қолдануға тура келеді.
8. Файлдармен жұмыс істеуге арналған компоненттер.
Бағдарламалау процесіндегі ең маңызды жұмыстың бірі – ол файлдармен жұмыс болып табылады. Осы жұмыс нәтижесінде ақпаратты есептеуге, оны сақтауға және файлдармен басқа да әрекеттерді орындауға мүмкіндік аламыз. Delphi-де: файлдарды
құруға, іздеуге, оқып-жазуға, атын өзгертуге және директорийге өзгеріс енгізуге толық болады. Сонымен файлдармен жұмыс істей алатын компоненттерге Delphi-дің басты бетінде орналасқан ListBox, ComboBox, Memo компоненттері жатады. ListBox пен ComboBox үшін компоненттердің әр жолы Items[i]-тің, ал Memo үшін Lines[i]-тің обьектісі болып табылады, мұндағы i – нөлден бастап саналатын жол нөмірі.
Компоненттерге жолды Add және Insert әдістері арқылы қосуға болады:
begin
Memo1.Lines.Add('Бірінші жол');
ComboBox1.Items.Add('Бірінші жол');
ComboBox1.Items.Add('Екінші жол');
ListBox1.Items.Add('Бірінші жол');
ListBox1.Items.Add('Екінші жол');
end ;
Add әдісі арқылы жолды соңына,ал Insert-тің қосымша параметрлерін пайдаланып өзіміз қалаған жолдан кейін қосуға болады. Ол былай жүзеге асады:
ComboBox1.Items[0] := 'Бірінші жол өзгерді' ;
ListBox1.Items[1] := 'Екінші жол өзгерді' ;
ComboBox компонентінде (Edit компонентіндегі сияқты) енгізілген мәтін сақталатын қосымша Text қасиеті бар:
ComboBox1.Text := ' Енгізілетін мәтін ';
Енді Enter пернесін басу арқылы осы компонентке қажет ақпаратты енгізу және оны Escape пернесімен жоюды қарастырайық. Ол үшін: Пішіндегі ComboBox-ты белгілеңіз және обьектілер инспекторындағы Events астарына көшіңіз. Осындағы өңдегіш onkeypress-ті екі рет шертіңіз. Delphi жүйесі өңдеуші жобасын дайындады, енді осында былай деп жазыңыз:
begin
if Key=#13 then
ComboBox1.Items.Add(ComboBox1.Text);
if Key=#27 then
ComboBox1.Items.Delete(ComboBox1.Items.Count-1);
end ;
Мұндағы Key – басылған перненің коды бар өңдеуіштің қандай да бір айнымалысы, ал #13 пен #27 – Enter мен Escape пернелерінің сәйкес кодтары. Items.Count – компонентте тұрған жолдар саны. Мұнда жолды есептеу 0-ден басталатындықтан, одан 1-ді кемітуіміз керек. Сонда Items.Count-1 әрдайым соңғы жолды көрсетіп тұрады. Escape пернесін біртіндеп басу арқылы барлық жолды жоюымызға болады. ComboBox1.Items.Delete(0) командасымен де сол жұмысты орындауға болады, бірақ мұнда тек бірінші жолдар ғана жойылады. Бірден барлығын жою үшін Clear әдісін қолданады.
Енді файлдағы бар нәрсені сақтау жағдайын қарастырайық. Ол үшін мына команданы орындайық:
ListBox1.Items.SaveToFile(' файл_аты.txt ') ;
Мұнда txt кеңейтілімінің орнына басқа өзіңіз қалаған кеңейтілімді жазуыңызға немесе оны тіпті жазбауыңызға да болады. Алайда txt кеңейтілімі Блокнотты пайдаланып бағдарлама жазуда барынша қолайлы.
Файлды жүктеу қызметін LoadFromFile әдісі атқарады:
Егер Сіз бағдарламаңызда ComboBox, ListBox немесе Memo компоненттерімен жұмыс істемейсіз, ал ақпараттарды сақтауыңыз қажет болды делік, ол жағдайда не істейсіз? Ондайда компоненттердің бірін алып оны көрінбейтін етеміз. Ол үшін обьектілер инспекторында оның Visible қасиетіне False мәнін береміз. Одан компоненттің қызметі өзгермейді, бірақ компонент көрінбейтін болады.
Енді экранда оны жабарда өз қалпын сақтайтын және сол орында ашылатын бағдарлама құрайық. Мұнда бізге Пішіннің экранның сол жақ шеті мен жоғарғы жиегінен қашықтығын анықтайтын Left және Top қасиеттерінің мәнін сақтауымыз қажет. Олардың мәні пиксельмен өрнектеледі және ол Integer. Осы мәндерді IntToStr операторының көмегімен жолдық мәнге айналдыру керек.
Сонымен Пішінге көрінбейтін ListBox орнатып, пішіндегі оның көрінбей тұрған орнын шертіңіз, сонда обьектілер инспекторында оның қасиеттері көрінетін болсын және Events астарына көшіңіз. Осындағы OnClose өңдеуішін шертіп, шыққан кодтар терезесіне мынаны жазыңыз:
begin
ListBox1.Items.Clear;
ListBox1.Items.Add(IntToStr(Form1.Left));
ListBox1.Items.Add(IntToStr(Form1.Top));
ListBox1.Items.SaveToFile('MyFormPos.txt');
end ;
Міне осы өңдеуіш пішіннің экрандағы орнын сақтайды.
Енді бағдарлама жүктелген кезде пішінді орнына орналастыратын өңдеуіш жазайық. Өңдеуіш жобасының oncreate оқиғасын құрыңыз. Бұл оқиға ОЖ арқылы пішінді құру сәтінде пайда болады. Міне осы сәтте оған қажетті қасиеттерді меншіктеу қажет. Соның бағдарламасын жазайық:
begin
if FileExists('MyFormPos.txt') then
begin
ListBox1.Items.LoadFromFile('MyFormPos.txt');
Form1.Left:=StrToInt(ListBox1.Items[0]);
Form1.Top:=StrToInt(ListBox1.Items[1]);
end ;
end ;
Мұнда 1-жолда файлдың бар-жоқтығына тексеру жүргізіледі, егер ол жоқ болса, онда қате туралы хабарлама шығады. Дегенмен ескертпеден соң да пішін жобалаған орында ашылады, ал жабылар кезде қажетті файл қайта қалпына келеді. Мұндағы логикалық жақшада MyFormPos.txt файлы бағдарламасы бар бумада жатқанда ғана орындалатын кодтың өзі болады, өйткені мұнда салыстырмалы орын көрсетілген. Нақты, мыс, C:\Program Files\MyProg\MyFormPos.txt. орналасу орнын көрсетуге де болады.
Файлдың бар-жоқтығын ерекше жағдайларды бақылаудың көмегімен де орындауымыз мүмкін. Арнаулы оператордың көмегімен оны ұстап алып, бағдарламада қате кетірмеуге болады. Кәсіби бағдарламалардың Windows реестрінде өз орны сақталады. Оған да келерміз. әзірше бұл кіріспені аяқтаймыз.
9. Файлдармен тікелей жұмыс.
Delphi жүйесіндегі файлдармен жұмыс технологиясы әрекеттердің белгілі бір ретін орындауды талап етеді:
Ең алдымен файл ашылуы тиіс. Жүйе басқа қолданбалар-дың файлдармен жұмыс істеуге кедергі келтірмеуін бақылайды. Осы кезде файл қандай режимде – ақпараттар-ды өзгерту немесе оны тек есептеу үшін ғана ашыла ма, сол бірге анықталады. Файл ашылған соң бағдарламаға өңдеу-дің барлық процедураларында осы файлды көрсетуге қолданылатын оның идентификаторы орнына қайтарылады.
Файлмен жұмыс басталады. Ол файлды жазу, есептеу, іздеу және басқа да операциялар болуы мүмкін.
Файл жабылады. Енді ол басқа қолданбалар үшін тағы да шектеусіз қол жетімді болады. Файлдың жабылуы оған енгізілген барлық өзгерістердің сақталуына кепілдік береді.
Delphi-де файлдармен жұмыстың бірнеше тәсілдері жүзеге асырылады. Қазір біз файлдық айнымалыны пайдалануға байланысты стандартты тәсілмен танысамыз.
Файлдық айнымалы файлды көрсету үшін енгізіледі. Ол File түйінді сөзінің көмегімен жасалады:
Var F: File;
Осылайша сипатталған файлдық айнымалы типтелмеген деп саналып, файлдың белгісіз құрылымдармен жұмыс істеуіне мүмкіндік береді. Мәліметтер файлды ашқан кезде блок бойынша мөлшері 1 байттан бастап есептеледі және жазылады.
Алайда көбінесе бірыңғай жазбалардан тұратын файлдар пайдаланылады. Мұндай файлдарды сипаттау үшін жоғарыдағы сипаттамаға жазбаның типі көрсетіліп, былай толықтырылады
Var F: File of жазба_типі;
Тип ретінде базалық типтерді немесе өзіндік типтерді қолдануға болады. Мұнда тип үшін байтпен алынған дәл мөлшер болуы маңызды. Өйткені осыдан бұрын айтылғандай, String типі таза түрінде емес, тек String[N] түрінде ғана қолданыла алады.
Файлдан есептелген немесе файлға жазылған мәліметтер кәдімгі айнымалылардың құрамында болады, ол айнымалы да файлдық айнымалының типіндей болуы тиіс.
Сондықтан бағдарламада алдымен қажетті типті сипаттап алып, сонан соң барып осы типтегі файлдық және кәдімгі екі айнымалыны енгізейік:
Файлды ашу үшін, оның орны көрсетілуі қажет. Ол үшін файлдық айнымалы оның адресі бойынша анықталатын тиісті файлмен байланысты болуы тиіс. Файл адресі дискі мен каталогы көрсетілген('C:\Мои документы\Мои рисунки\FileName.ini') – абсолютті немесе салыстырмалы болуы мүмкін. Салыстырмалы адресті тиісті кеңейтілімі бар файлдың аты арқылы көрсету жеткілікті. Оны AssignFile операторы арқылы былай сипаттауға болады:
AssignFile(SaveF, 'C:\Мои документы\Мои рисунки\FileName.ini');
AssignFile(SaveF, 'FileName.ini');
Енді файл ашылуы тиіс.
Файлдың Rewrite операторы арқылы ашылуы оның қайта құрылуына алып келеді, яғни бұл бұрынғы файл ескертусіз жойылады да, оның орнына берілген типтегі мәліметтерді жазуға дайын жаңа файл құрылады деген сөз. Егер файл жоқ болса, онда ол жаңадан жасалады.
Файлды Reset операторымен ашқанда ол бұрынғы файлды мәліметтерді есептеу немесе оларды жазу үшін ашады және оның көрсеткіші файлдың басына орнатылады:
Rewrite(SaveF);
Reset(SaveF);
Осы операторлардың әрқайсысының типтік емес файлдар үшін мағынасы болатын міндетті емес екінші параметрлері болуы мүмкін және ол мұндай файлдың жазба ұзындығын байтпен былай көрсетеді:
Rewrite(SaveF, 1);
Reset(SaveF, 1);
Файлды оқу Read операторымен жүргізіледі:
Read(SaveF, SaveV);
Файлға жазу Write операторы арқылы орындалады:
Write(SaveF, SaveV);
Файлды оқу мен оған жазу көрсеткіштің ағымдағы позициясынан бастап жүргізіледі де, содан соң көрсеткіш келесі жазбаға барып орналасады. Керекті файлдың бар-жоқтығын FileExists операторы арқылы тексеруге болады:
if FileExists('FileName.ini')
then Read(SaveF, SaveV);
Керекті жазбаға көрсеткішті Seek(SaveF,N) операторымен мәжбүрлеп орнатуға болады, мұндағы N – нөлден бастап саналатын жазба нөмірі. Мысалы, көрсеткішті 50-жазбаға орнату үшін былай жазады: Seek(SaveF, 49);
Файлды біртіндеп оқу кезінде көрсеткіш файлдың соңына жетеді де, әрі қарай оқу кезінде «қате» туралы хабарлайды. Осы қате шықпау үшін, файлдың соңына жеткен-жетпегенін тексеруге EOF операторын пайдалануға болады:
while (not EOF(SaveF)) do
Read(SaveF, SaveV);
Файлдағы барлық жазбаны (көрсеткіштің тұрған жерінен файлдың соңына дейін) Truncate(SaveF) операторы қиып тастауға(өшіруге не қажет болса, жоюға) мүмкіндігі бар.
Файлмен жұмыс істеп болған соң оны жабу керек. Оны CloseFile(SaveF) ; операторы атқарады.
Енді тақырыптың бірінші бөліміндегі экрандағы өз орнын сақтайтын бағдарламаны өзгертуімізге болады. Мұнда жоғарыдағы суретте келтірілгендіктен, сипаттауды қалдырамыз.
Пішіннің OnCreate оқиғасын өңдеушіні құрайық:
procedure TForm1.FormCreate(Sender: TObject) ;
begin
AssignFile(SaveF, 'Init.ini') ;
if FileExists('Init.ini') then
begin
Reset(SaveF) ;
Read(SaveF, SaveV) ;
Form1.Left := SaveV.X ;
Form1.Top := SaveV.Y ;
Form1.Caption:=SaveV.Caption ; //осы //айнымалылар Пішіннің тақырыбын қосымша сақтайды
end ;
end ;
Енді OnClose оқиғасын өңдеушіні құрайық:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction) ;
begin
Rewrite(SaveF) ; //мұнда файлдың бар-жоқтығын
//тексерудің қажеті жоқ, оны қайта құрамыз.
SaveV.X := Form1.Left ;
SaveV.Y := Form1.Top ;
SaveV.Caption := Form1.Caption ;
Write(SaveF, SaveV) ;
CloseFile(SaveF) ;
end ;
Файл осы жағдайда есептеледі де, өзіміз көрсеткен орынға жазылады. Алайда бұл жерде жұмыс істейтін бағдарламадан керекті файлды таңдап ала білу қажет. Ол туралы тақырыптың соңғы бөлігінде айтатын боламыз.
10. Файлдарды ашудың және сақтаудың диалогтары
Алдыңғы тақырыптарда біз бағдарлама мәтінінде жазылған адресі бар файлдармен жұмыс істеуді үйрендік. Әрине, біз қалауымызға қарай кез-келген файлды қарастырғымыз келеді. Delphi бізге мұндай мүмкіндік бере алады. Жұмыс істеп тұрған бағдарламада файлдарды таңдауды жүзеге асыратын компоненттерді қарастырайық. Delphi –дің файл таңдау диалогы бағдарламаға қандай файлмен жұмыс істеуге болатынын көрсетуге мүмкіндік жасайды.
Компоненттер палитрасының Dialogs астарында OpenDialog және SaveDialog компоненттері бар. Осы астарда орналасқан диалогтардың барлығы тек жобалау кезеңінде ғана көрінетін, ал жұмыс істеп тұрған бағдарламадағы Пішінге көшірілген кезде көрінбейтін компоненттер.
OpenDialog компоненті бағдарламалық стандарт терезесін ашуды, ал SaveDialog компоненті – сақтау терезесін ашуды ұйымдастырады.
Мұнда файл таңдау диалогы өздігінше ештеңе атқармайды, тек тұтынушының файл таңдау кезінде жасаған баптау жағдайын ұсынады.
Диалогтың ең басты әдісі – Execute. Ол файл таңдау терезесіндегі « ашу» немесе « сақтау» батырмаларын басу кезінде жұмыс істейді. Мысал ретінде Memo редакторына жүктеу үшін файл таңдауға мүмкіндік беретін және оны редакциялағаннан кейін сақтауды енгізейік.
Кәне, Пішінге екі диалогты , Memo мәтіндік редакторын және үш Button батырмаларын орналастырайық. Біреуінің Caption қасиетіне « Открыть», екіншісіне «Сохранить», үшіншісіне «Сохранить как» деп жазайық.
Onсlick өңдеуіштің « открыть » бағдарламасын қосып, жазамыз:
Достарыңызбен бөлісу: |