Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Нөлдік терминалдық жолдар
Нө лдік терминадық жолдар Windows-дің API (Application program interface) функцияларыншақ ыруда жиі пайдаланылады. Ө йткені Delphi ортасының компоненеттері Windows-дің API функцияларына байланысты барлық мә селелерді шешеді, программистің нө лдік терминалдық жолдарды пайдаланатын кездері сирек болады. Дегенмен мұ ндай жолдарды ө ң деудің ерекшеліктеріне қ ысқ аша тоқ талып ө тейік. String базалық типі жадыда термианльдық нө лді сақ тайды, сондық тан Object Pascal бір жолдық ө рнекте екі типтің аралас пайдалануына мү мкіндік береді. Сондай-ақ String жә не Pchar тү рлендіру автофункцияарының кө мегімен типтерді ө зара келтіруді жү зеге асырады. Мысалы, Procedure TfmExample.FormActivate(Sender: TObject); Var PCS: Pchar; SSS: =’123456’; Begin PCS: =’X=’; SSS: =’X=’; LBOutput.Caption: =SSS+PCS; End; Бұ дан LBOutput жолына Х= 12346 жазылуы шығ ады. Енді тағ ы бір мысал қ арастырайық. АРІ функциясының қ ұ рамына экранда тақ ырыбы, мә тіндік хабарламасы мен батырмалар жиынтығ ы бар диалог терезесін қ ұ руғ а мү мкіндік беретін MessageBox функциясы кіреді. Алдың ғ ы мысалдың соң ына MessageBox (0, SSS+PCS, ’терезе тақ ырыбы’, mb_ok); операторын қ оссақ, компилятор қ ате деп кө рсетеді, яғ ни функцияны шақ ыратын екінші параметр Pchar типті ө рнек болуы тиіс. Сонымен бірге, SSS+PCS ө рнегі тә різді компилятор оны жалпы String типіне келтіреді. Оператордың дұ рыс жазылуы тө мендегідей: MessageBox (0, Pchar (SSS+PCS), ’терезе тақ ырыбы’, mb_ok); Мә тіндік тұ рақ тылар кез келген жолдық типпен ү йлеседі, сондық тан ү шінші шақ ыру парметрін компилятор қ атесіз ө ң дейді. Delphi ортасында Pchar жә не String тө емнгі шекарасы нө лден басталатын символдар массиві болып есептеледі. Pchar жә не String типтерінен айырмашылығ ы мұ ндай массив компиляция кезең інде статикалық толтыру арнайы StrCopy процедурасының кө мегімен жү зеге асырылады:
Procedure TfmExample.bbRunClick(Sender: Tobject); Var АСS: array [0..6] of char; Begin StrCopy (ACS, ‘123456’); SSS: =’123’; LBOutput.Caption: =ACS; End; Pchar типімен жұ мыс істеу ү шін String типіндегідей операциялар: «+» жалғ астыру жә не салыстыру =, < >, >, <, > =, < =, операциялары пайдаланылады. Сондай-ақ, нө лдік терминалдық жолдаомен жұ мыс істеуге арналғ ан қ осалқ ы программалар бар.
ТАПСЫРМА: Жолдағ ы символдардың санын есептейтін қ осымша қ ұ райық. Жолды енгізіп болғ аннан кейін ENTER клавишасын басу қ ажет. Ал, программа жұ мысын аяқ тау ү шін Close батырмасын басу керек. ТАПСЫРМАНЫ ОРЫНДАУҒ А Ә ДІСТЕМЕЛІК НҰ СҚ АУЛАР: Алдымен формағ а орналастыратын компоненттерге сипаттама берйік. Жолдармен жұ мыс істегенде енгізу мен шығ аруды ListBox жә не ComboBox компоненттерінің кө мегімен ұ йымдастырғ ан ың ғ айлы. ListBox компоненті элементтері клавиатураның немесе тышқ анның кө мегімен таң далатын тізім болып табылады. Элементтер тізімі Items қ асиетімен, Add, Delete жә не Insert ә дістерімен жолдарды қ осу, ө шіру жә не қ ою орындалады. Еркшеленген элементтің нө мірін анық тау ү шін ItemIndex қ асиеті пайдаланылады. Ал, ComboBox компоненті ListBox тізімі мен Edit редакторының комбинациясын береді, сондық тан осы компоненттердің барлық қ асиеттері біріктірілген деуге болады. Жө ндеу терезесімен жұ мыс істеу ү шін Edit компонентіндегідей Text қ асиеті пайдаланылады, ал ListBox компонентінде тізімнен таң дау ү шін Items қ асиеті пайдаланылады. Style қ асиетімен анық талатын компоненттің тү рі бар. CsSimple тү рінде тізім барлық уақ ытта ашық болады, ал қ алғ ан жағ дайларда редактордың оң жағ ындағ ы ашу батырмасын басқ аннан кейін ашылады. ListBox жә не ComboBox компоненттері Standard бетінде орналасқ ан. Ал, BitBtn компоненті Additional бетінде орналасқ ан жә не стандартты Button батырмасының бірнеше тү рін беретіні 4-тарауда айтығ ан болатын. Бұ л жағ дайда BkClose батырмасы негізгі терезені жауып, программа жұ мысын аяқ тайды. Енді оқ иғ аны ө ң деуші процедуралар қ ұ руды қ арастырайық. Қ осымшаны шақ ырғ аннан кейін интерфейс панелі экранда пайда болғ ан кезде ComboBox компонентінің ө рісіне курсорды келтіретін форманы екпінді жасағ анда пайда болатын OnActivate оқ иғ асын пайдалануғ а болады. Бұ л оқ иғ а- ө ң деушіні қ ұ ру ү шін Объектілер Инспекторы терезесінен Form1 компонентін таң дап, Events бетінен OnActivate оқ иғ асын тауып, оның оң жақ бө лігін тышқ анмен жылдам екі рет белгілейміз. Курсор оқ иғ а ө ң деуші Procedure FormActivate (Sender: TObject); процедурасының мә тінінде орналасады. Процедура денесіне ComboBox компонентіндегі таң далатын тізімге енгізілу ү шін орындалатын оқ иғ а ө ң деуші процедураны қ арастырайық. Ол ү шін Объектілер Инспекторы терезесінен ComboBox компонетін таң дап, Events бетінен OnKeyPress оқ иғ асын тауып, оның оң жақ бө лігін тышқ анмен жылдам екі рет белгілейміз. Нә тижесінде курсор оқ иғ а ө ң деуші. Procedure ComboBox1 KeyPress (Sender: TObject; var Key: Char); процедурасының мә тінінде тұ рады. Дә л осылайша, тышқ анның батырмасын басқ анда тізімен таң даулы жү зеге асыратын ComboBox1компоненті ү шін OnClick оқ иғ а ө ң деуші Procedure ComboBox1 Click (Sender: TObject); процедураны алу орындалады. Таң далғ ан жолдағ ы символдар санын есептейтін негізгі алгоритмді жү зеге асыратын программа мә тіні тө мендегідей:
unit HMUnit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons; Type TForm1 = class(TForm) ComboBox1: TComboBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; BitBtn1: TBitBtn; procedure ComboBox1KeyPress(Sender: TObject; var Key: Char); procedure ComboBox1Click(Sender: TObject); procedure FormActivate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormActivate(Sender: TObject); begin ComboBox1.SetFocus; end; procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char); begin if key=#13 then begin ComboBox1.Items.Add(ComboBox1.Text); ComboBox1.Text: =''; end; end; procedure TForm1.ComboBox1Click(Sender: TObject); var st: string; nst, n, i, ind: integer; begin n: =0; ind: =0; nst: =ComboBox1.ItemIndex; st: =ComboBox1.Items[nst]; for i: =1 to Length(st) do case ind of 0: if st[i]< > ''then begin {ind: =1; } n: =n+1; end else n: =n-1; 1: if st[i]=''then ind: =0; end; Label3.Caption: =IntToStr(n); end; end. Программаның орындалу нә тижесі 5.3.-суретте келтірілген.
5.3.-сурет Енгізілген жолдағ ы символдар санын есептеу терезесі
Ұ сынылатын ә дебиеттер: [1-9] Бекіту сұ рақ тары: 1. Object Pascal тілінде мә тіндерді ө ң деу ү шін қ андай типтер пайдаланылады? 2. Жолдың ағ ымдағ ы ұ зындығ ы қ андай функцияның кө мегімен беріледі? 3. Ең ү лкен ұ зындық тағ ы жолдың типі қ алай хабарланады? 4. Жолдық айнымалылар хабарланғ аннан кейінгі жадының жұ мыс механизмі қ андай? 5. Екі байттық символдар мен Unicode символдары қ андай типпен хабарланады? 6. Нө лдік терминалдық жолдың типі қ алай аталады? 7. Нө лдік терминалдық жолдар қ ай кезде пайдаланылады? 8. StrCopy процедурасының қ ызметі қ андай? 9. Мә тіндегі ең ұ зын сө зді басып шығ аратын программа қ ұ рың ыз. Мә тіндегі сө здер бос орынмен бө лінген. 10. Берілген сө здің мә тінде қ анша рет кездесетінін анық тайтын программа қ ұ рың ыз. Сө здер ү тір арқ ылы ажыртылғ ан. 11. Берілген мә тіндегі барлық бос орынды ү тірге алмастырың дар. Соң ғ ы символы ү тірге алмастырмай ө шірің дер. Егер мә тінде бірнеше бос орын кездесетін болса, онда олардың орнына бір ү тір қ ойың дар. 12. S1, …, S30 символдар тізбегі берілген. Берілген тізбектің символдарын кері ретпен S30, …, S1 орналастыратын программа қ ұ рың дар. 13. Берілген мә тіндегі eto сө зін to сө зіне алмастыратын программа қ ұ рың дар. 14. Мә тін берілген. Осы мә тіннің бү тін сандардың ондық жазылуы болатынын анық тайтын программа қ ұ рың ыз. 15. Мә тін сө здері бос орынмен бө лінген. Ішінде а жә не в ә ріптері ең кө п кездесетін сө зді табың ыздар. 16. Мә тіндегі ing ә ріптері тіркесімен аяқ талатын сө з бө лігін ed жалғ ауына алмастырың дар.
|