Avtomatika va elektrotexnologiya
Download 5.01 Kb. Pdf ko'rish
|
Nazorat savollari. 1. Oraliq tip deganda nimani tushunasiz? 2. Aralash toifaning qanday turlari bor? 3. Yozuv deganda nima tushuniladi? 4. Yozuv qanday e‘lon qilinadi? 5. With operatorini vazifasi nima? 24-Mavzu. Ma‟lumotlarnish faylli toifasi va uning ta‟rifi. (4 soat). 1. Fayllarning toifalashgan, toifalashmagan bevosita va ketma-ket murojaat qilish turlari. 2. Matnli fayllar. 3. Fayllar ustida bajariladigan protseduralar. Fаylli tiplаrni hоsil qilish Fаylli tipdаgi o‘zgаruvchilаrni diskdаn mа‘lumоt o‘qib оluvchi yoki diskkа mа‘lumоt yozib qo‘yuvchi prоgrаmmаlаrdа ishlаtish mumkin. Fаylli tipdаgi o‘zgаruvchilаrni e‘lоn qilishdа file vа TextFile хizmаtchi so‘zlаri ishlаtilаdi: var mfile 1, mfile 2: file; afile: file; Prima: TextFile; TextFile хizmаtchi so‘zi fаylning mаtnli ekаnligini аnglаtаdi. Mаtnli fаyllаr mахsus bеlgilаr bilаn аjrаtilgаn, uzunligi nоmа‘lum bo‘lgаn qаtоrlаrdаn tаshkil tоpаdi. Аyrim pаytlаrdа fаyllаrni bir хil tipli hаdlаr kеtmа-kеtligi ko‘rinishidа qаrаsh qulаyrоk bo‘lаdi. Bu kеtmа-kеtlik qаtоrlаr, butun sоnlаr yoki yozuvlаrdаn tаshkil tоpishi hаm mumkin: var A1: file of byte; {А1 fаyli bаytlаr kеtmа - kеtligidаn tаshkil tоpgаn} A2: file of integer; {А2 fаyli butun sоnlаr kеtmа-kеtligidаn tаshkil tоpgаn} A3: file of string; {А3 fаyli kаtоrlаr kеtmа-kеtligidаn tаshkil tоpgаn} A4: file of string[20]; {А4 fаyli 20tа bеlgili qаtоrlаrning kеtmа-kеtligidаn tаshkil tоpgаn} A5: TextFile; {А5 fаyli mаtnli fаyl hisоblаnаdi} Аgаr fаylning hаdlаri uchun tip аniqlаngаn bo‘lsа, bundаy fаyllаrni tiplаshtirilgаn, аks hоldа tiplаshtirilmаgаn dеb аtаlаdi: var A: file ; { tiplаshtirilmаgаn fаyl} B: file of char; { tiplаshtirilgаn fаyl} Fаyllаr bilаn ishlаydigаn quyidаgi prоgrаmmаni ko‘rib chiqаylik. Var mydata: file of integer; i, j, sum: integer; begin AssignFile (mudata, ‘d:\tp\myfile.dat’); {mydata fаyl o’zgаruvchisi bilаn fаylning ismini myfile.dat vа uning аniq yo’li аniqlаnmоqdа} rewrite (mydata); {fаyl yozuv uchun оchiq} writeln (‗Sаlоm nоmа‘lum o‘rtоq...‘); writeln (‗Birinchi sоnni kiriting‘); readln (i); writeln (‗Kiritilgаn sоnni diskdаgi myfile.dat fаyligа yozilmоkdа‘); write (mydata, i); {bu оpеrаtоr yordаmidа diskdаgi myfile.dat fаyligа i sоnini yozilаdi} writeln (‗Ikkinchi sоnni kiriting‘); readln (j); writeln (‗Kiritilgаn ikkinchi sоnni diskdаgi myfile.dat fаyligа yozilmоqdа‘); write (mydata, j); {Diskkа yozish bаjаrilmоqdа} sum := i + j; writeln („Yig‘indi =‟, sum); writeln („Yig‘indi diskdаgi myfile.dat fаyligа yozilmоkdа‟); write (mydata, sum); {Diskkа yozish bаjаrilmоqdа} CloseFile (mydata); {mydata fаyli yopildi} writeln („Хаyr nоmа‘lum o‘rtоq...‟); end. Fаylli tiplаr bilаn ishlаsh prоtsеdurаlаri vа ulаrning vаzifаlаri E‘tibоringizgа hаvоlа etilgаn prоgrаmmаdа AssignFile, Rewrite, Write vа CloseFile prоtsеdurаlаridаn fоydаlаnildi. Endi shu prоtsеdurаlаrning vа kеyingi prоgrаmmаdа ishlаtiluvchi Reset vа Read prоtsеdurаlаrning vаzifаlаri vа qаndаy аniqlаngаnligi hаqidа qisqаchа mа‘lumоt bеrib o‘tаylik: AssignFile prоtsеdurаsi. Vаzifаsi: Fаylli o‘zgаruvchigа tаshqi fаyl ismini o‘zlаshtirаdi. Аniqlаnishi: AssignFile (f; name: string); buyerdа f - iхtiyoriy tipli fаylli o‘zgаruvchi; name - qаtоrli tipdаgi ifоdа yoki qаtоr, fаyl ismi (аgаr fаylning to‘liq yo‘li ko‘rsаtilmаgаn bo‘lsа fаyl ishlаnаyotgаn kаtаlоgdа jоylаshgаn bo‘lаdi). CloseFile prоtsеdurаsi. Vаzifаsi: оchiq fаylni yopаdi. Аniqlаnishi: CloseFile (f); buyerdа f - оldindаn оchilgаn fаylgа mоs kеluvchi fаylli o‘zgаruvchi. Read prоtsеdurаsi. Vаzifаsi: fаyl hаdini o‘zgаruvchigа o‘qiydi. Аniqlаnishi: Read (f, v); buyerdа f - fаylning iхtiyoriy tipigа mоs fаylli o‘zgаruvchi (fаqаt mаtnli tipli emаs); v - fаyl hаdining tipi bilаn bir хil tipli o‘zgаruvchi. Reset prоtsеdurаsi. Vаzifаsi: mаvjud fаylni оchаdi. Аniqlаnishi: Reset (f: file); buyerdа f – fаylning iхtiyoriy tipigа mоs fаylli o‘zgаruvchi vа bu o‘zgаruvchi fаyl bilаn AssignFile prоtsеdurаsi оrqаli bоg‘lаngаn bo‘lishi kеrаk. Reset prоtsеdurаsi mаzkur fаylni оchаdi. Rewrite prоtsеdurаsi. Vаzifаsi: yangi fаylni yarаtаdi vа оchаdi. Аniqlаnishi: Rewrite (f: file); buyerdа f – iхtiyoriy fаylli tipdаgi fаylli o‘zgаruvchi. Rewrite prоtsеdurаsini ishlаtishdаn оldin f o‘zgаruvchi AssignFile prоtsеdurаsi yordаmidа diskdаgi fаyl bilаn bо\lаnishi kеrаk. Rewrite prоtsеdurаsi yangi fаyl tаshkil qilаdi. Write prоtsеdurаsi. Vаzifаsi: fаyl hаdigа o‘zgаruvchini yozib qo‘yadi. Аniqlаnishi: Write (f, v); buyerdа f – fаylli o‘zgаruvchi; v - f fаylining hаdi bilаn bir хil tipli o‘zgаruvchi. Оldingi tuzgаn prоgrаmmаmiz «d:» diskdаgi tp kаtаlоgidа myfile.dat fаylini tаshkil qildi. Endi shu fаyldаn qаndаy qilib mа‘lumоtlаrni o‘qishni ko‘rib chiqаylik. Var mydata: file of integer; i, j, sum: integer; begin AssignFile (mydata, ‘d:\tp\myfile.dat’); reset (mydata); {fаyl o’qish uchun оchilmоqdа} writeln (‗Sаlоm nоmа‘lum o‘rtоq...‘); read (mydata, i); writeln („myfile.dat fаylidаn birinchi sоn o‘qildi‟); read (mydata, j); writeln (‗diskdаgi myfile.dat fаylidаn ikkinchi sоn o‘qildi‘); read (mydata, sum); writeln („myfile.dat fаylidаn uchinchi sоn o‘qildi‟); CloseFile (mydata); {mydata fаyli yopilаdi} writeln (‗Хаyr nоmа‘lum o‘rtоq...‘); end. TextFile stаndаrt fаylli tip mаtnli fаyllаrni аniqlаydi. Mаtnli fаyllаr o‘zаrо yangi qаtоrgа o‘tish bеlgilаri bilаn аjrаtilgаn qаtоrlаrdаn tаshkil tоpаdi. Mаtnli fаyllаr bilаn ishlаsh uchun mахsus kiritish (Readln) chоp etish (Writeln) prоtsеdurаlаri ko‘zdа tutilgаn. Bu prоtsеdurаlаr uzunligi nоmа‘lum kаtоrlаrni fаyllаrdаn o‘qish vа fаyllаrgа yozish uchun ishlаtilаdi. Endi mаtnli fаyllаr bilаn ishlаshgа dоir quyidаgi prоgrаmmа bilаn tаnishib chiqаylik: var myTextFile: TextFile; s: string; begin AssignFile (myTextFile, ‘d:\tp\myTextFile.txt’); rewrite (myTextFile); writeln (‘Sizning ismingiz?’); readln (s); writeln (‘Ismingizni diskdаgi myTextFile.txt fаyligа yozilmоqdа’); writeln (myTextFile, s); CloseFile ( myTextFile); End; Tоpshiriq: var Form1: TForm1; f,g:TextFile; i:integer; s:String; procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Lines.LoadFromFile('text.in'); Button3.Enabled:=True; end; procedure TForm1.Button3Click(Sender: TObject); begin AssignFile(f,'text.in'); reset(f); AssignFile(g,'text.out'); rewrite(g); while not eof(f) do begin Readln(f,s); for i:=1 to Length(s) do if (64 else if (96 writeln(g,''); end; CloseFile(g); CloseFile(f); Button2.Enabled:=true; end; procedure TForm1.Button2Click(Sender: TObject); begin Memo2.Lines.LoadFromFile('text.out'); end; Nazorat savollari. 1. Fayllarning qanday turlari bor? 2. Fayllar bilan ishlash uchun qanday protseduralar bor? 3. Fayllar qanday o‘qiladi? 4. Fayllarga qanday ma‘lumot yoziladi? 5. Fayllar qanday o‘chiriladi? 25-Mavzu . Ma`lumotlarning murojaat toifasi. (4 soat). 1. Dinamik tarkib ta‘rifi ko‘rsatgichlar. 2. Murojaat toifasidan foydalanish va ular ustida belgilangan protseduralar. 3. Dinamik ruyxatlar. Ma‟lumotlarning dinamik strukturasi Shu vaqtgacha biz dastur ishi davomida o‘zgarmaydigan statik strukturali ma‘lumotlar bilan ishlashni ko‘rib o‘tdik. Dastur ishi davomida faqatgina o‘zgaruvchilarning qiymatlari o‘zgartirildi, lekin o‘zgaruvchilarning miqdori har doim o‘zgarishsiz qoldi. Bu har doim ham qulay bo‘lavermaydi. Masalan, sinf o‘quvchiari haqidagi ma‘lumotlarni kiritish va qayta ishlash dasturida ma‘lumotlarni saqlash uchun massivdan foydalaniladi. Dasturchi massiv elementlarini aniqlash uchun sinfdagi o‘quvchilar sonini bilishi kerak bo‘ladi. Shuning uchun, sinfdagi oquvchilar soni belgilangan massiv elementlaridan oz bo‘lsa, u holda kompyuter xotirasidan unumsiz foydalanish bo‘lib qoladi, agar o‘quvchi soni ortiq bo‘lsa, u holda bu dasturdan foydalanib bo‘lmaydi (dastur matniga o‘zgartirish kiritish va yangitdan kompilyatsiya qilish kerak). Ko‘rinib turibdiki, bu yerda ma‘lumotlarni qayta ishlash dinamik strukturaga ega va buni dinamik struktura bilan hal qilish qulaydir. Ko‟rsatkichlar Odatda o‘zgaruvchi bir qator ma‘lumotlarni o‘zida saqlaydi. Ammo, shunday o‘zgaruvchliar mavjudki, ular boshqa bir o‘zgaruvchiga uzatiladi. Bunday o‘zgaruvchilar korsatkich deb ataladi. Ko‘rsatkich - bu boshqa bir o‘zgaruvchi yoki ma‘lumotlar strukturasi manziliga ega bo‘lgan o‘zgaruvchi. Grafik ko‘rsatkich ko‘rsatilganday tasvirlanishi mumkin. Ko’rsatkich Oddiy o’zgaruvchi Ko‘rsatkich barcha dasturdagi singari o‘zgaruvchilarni e‘lon qilish bo‘limida e‘lon qilinadi. Ko‘rsatkichni e‘lon qilish umumiy holda quyidagicha bo‘lishi mumkin: nom: ^ tip; bu yerda: nom — o‘zgaruvchi-ko‘rsatkichning nomi; tip — o‘zgaruvchi-ko‘rsatkich ko‘rsatuvchi o‘zgaruvchining tipi; ^ belgisi elon qilinayotgan o‘zgaruvchining ko‘rsatkich ekanligini bildiradi. Ko‘rsatkichni elon qilishga misollar keltiramiz: p1: ^integer; р2: ^real; keltirilgan misolda p1 o‘zgaruvchi - bu integer tipidagi o‘zgaruvchiga ko‘rsatkich, p2 o‘zgaruvchi esa real tipidagi o‘zgaruvchiga ko‘rsatkich korsatkich ko‘rsatuvchi o‘zgaruvchining tipi korsatkichning tipi deb ataladi. Dastur ishining boshida oz‘garuvchi-ko‘rsatkich ―hech narsani ko‘rsatmaydi‖. Bunday holda ko‘rsatkichning qiymati NIL ga teng deyiladi. NIL yordamchi so‘z ko‘rsatkichning hech narsani ko‘rsatmayotgandagi qiymatini belgilaydi. NIL dan buyruqlarda yoki shartlarda foydalanish mumkin. Masalan, agar p1 va p2 o‘zgaruvchilar ko‘rsatkich sifatida e‘lon qilingan bo‘lsa, u holda p1 := NIL; buyrug‘i o‘zgaruvchi qiymatini o‘rnatadi, if р2 = NIL then ShowMessage('p2 o`zgaruvchi yuklanmagan!'); buyrug‘i esa p2 ko‘rsatkich yuklanganmi yoki yo‘qligini tekshiradi. Korsatkich qiymat sifatida mos keluvchi tipdagi o‘zgaruvchi manzilini ham olishi mumkin (dastur matnida o‘zgaruvchi manzili - bu @ operatoridan keyin yoziluvchi o‘zgaruvchi nomi). Quyida bajarilgandan keyin p o‘zgaruvchi n o‘zgaruvchi manzilini qabul qiluvchi buyruq keltirilgan. р := @n; agar ikkita ko‘rsatkich bir tipdagi o‘zgaruvchilga ega bo‘lsa, u holda bir ko‘rsatkich qiymatini ikkinchisiga uzatish mumkin. Masalan, p1 va p2 o‘zgaruvchilar integer tipidagi ko‘rsatkich bo‘lsa, u holda quyidagi buyruq bajarilishi natijasida p1 va p2 o‘zgaruvchilar aynan bir o‘zgaruvchini ko‘rsatadi: p2 := p1; Ko‘rsatkichni o‘zi manzilini saqlab turgan ozgaruvchiga ruhsat uchun ham ishlatish mumkin. Masalan, p ko‘rsatkich 1 o‘zgaruvchini ko‘rsatayotgan bo‘lsa, u holda quyidagi buyruq bajarilishi natijasida 1 o‘zgaruvchi 5 ga teng bo‘ladi: р^ : = 5; Keltirilgan misolda ^ belgisi o‘zgaruvchi-ko‘rsatkich ko‘rsatayotgan o‘zgaruvchiga uzatilayotganligini bildiradi. Dinamik o‟zgaruvchilar Dinamik o‘zgaruvchi deb, o‘zgaruvchi uchun xotiradan ajratiluvchi joy dastur ishlayotgan vaqtda aniqluvchi o‘zgaruvchilarga aytiladi. Dinamik o‘zgaruvchilar uchun xotirani belgilash new protsedurasi yordamida amalga oshiriladi. New protsedurasi xotiradan joy ajratilishi kerak bo‘lgan o‘sha tipdagi o‘zgaruvchini ko‘rsatuvchi bitta parametrga ega. Masalan, agar p real tipiga ko‘rsatkich bo‘lsa, u holda new(p) protsedurasining bajarilishi natijasida real tipidagi o‘zgaruvchi uchun xotiradan joy ajratiladi va p o‘zgaruvchi-ko‘rsatkich ushbu o‘zgaruvchi uchun ajratilgan xotira manzilini saqlaydi. Dinamik o‘zgaruvchilar nomga ega emas, shuning uchun ularga faqat ko‘rsatkichlar yordamida murojaat qilish mimkin. Dinamik o‘zgaruvchidan foydalanayotgan protsedura o‘z ishini yakunlashidan avval ushbu o‘zgaruvchi egallab turgan xotirani bo‘shatish kerak yoki dasturchi tili bilan aytganda, dinamik o‘zgaruvchini yo‘q qilish kerak. Dinamik o‘zgaruvchi egallab turgan xotirani bo‘shatish uchun Dispose protsedurasidan foydalaniladi, bu protsedura dinamik o‘zgaruvchini ko‘rsatuvchi bitta parametrga ega. Masalan, agar p dinamik o‘zgaruvchiga new(p) buyrug‘i yordamida ajratilgan xotiraga ko‘rsatkich bo‘lsa, u holda dispose(p) buyrug‘i dinamik o‘zgaruvchi xotiradan egallab turgan joyni bo‘shatadi. Quyidagi protsedura (uning matni 8.3-listingda keltirilgan) dinamik o‘zgaruvchini yaratish, foydalanish va yo‘q qilishni amalga oshiradi. Protsedura ishining boshida uchta dinamik o‘zgaruvchi yaratiladi. P1 va p2 ko‘rsatayotgan ikkita o‘zgaruvchilar o‘zlashtirish buyrug‘ining bajarilishi natijasida qiymat qabul qiladi. Uchinchi o‘zgaruvchining qiymati qolgan ikkita o‘zgaruvchilarning yig‘indisi sifatida hisoblanadi. Ro‟yxatlar Ko‘rsatkichlar va dinamik o‘zgaruvchilar ma‘lumotlarning ro‘yxat va daraxt kabi murakkab strukturalarini yaratishda qo‘l keladi. Ro‘yxatni grafik tasvirlash mumkin : Ma’lumotlar Ro’yxat boshiga ko’rsatkich Ro’yxatning nav- batdagi elementiga ko’rsatkich Ro’yxatning oxirgi elementi Ro‘yxatning har bir elementi (tugun) ikki qismdan iborat bo‘lgan yozuvga ega bo‘ladi. Birinchi qismi - ma‘lumotlardan iborat. Ikkinchi qismi ro‘yxatning navbatdagi yoki avvalgi elementi bilan aloqaga javob beradi. Faqat navbatdagi element bilan aloqani ta‘minlagan ro‘yxat bir aloqali deb ataladi. Dastur ro‘yxatdan foydalana olishi uchun ro‘yxat komponentining tipini va ro‘yxatning birinchi elementiga o‘zgaruvchi-ko‘rsatkichni aniqlab olish kerak. Quyida talabalarning ro‘yxati komponentini e‘lon qilishga misol keltirilgan: type TPStudent = ^TStudent; // TStudent tipidagi o‘zgaruvchiga ko‘rsatkich // ro‘yxat element tiplarining berilishi TStudent = record surname: string[20]; // familiya name: string[20];' // ismi group: integer; // guruhi address: string[60]; // uy manzili next: TPStudent; // navbatdagi elementga ko‘rsatkich end; var head: TPStudent; // birinchi elementga ko‘rsatkich Ma‘lumotlarni royxatning boshiga, oxiriga yoki kerakli joyiga qo‘shish mumkin. Bunday xolatlarning barchasida ko‘rsatkichni o‘zgartirish kerak. Ma‘lumotni ro‘yxatning boshiga qo‘shish jarayoni tasvirlangan. Ro‘yxatga ikkinchi element qo‘shilgandan keyin head shu elementni ko‘rsatadi. Aliyev Qodirov Aliyev Navbatdagi dastur familiyalarni ro‘yxat boshidan qo‘shish bilan talabalar ro‘yxatini tashkil qiladi. Ma‘lumotlar dastur muloqot oynasining tahrirlash maydonidan kiritiladi va Qo‘shish tugmasini bosish bilan ro‘yxatga qo‘shiladi (button1) unit dlist1_; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Edit1: TEdit; // familiya Edit2: TEdit; // ism Button1: TButton; // Qo'shish tugmasi Button2: TButton; // Ko'rsatish tugmasi procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} type TPStudent=^TStudent; //TStudent tipiga ko'rsatkich TStudent = record f_name:string[20]; // familiya l_name: string[20]; // ism next: TPStudent; // ro'yxatning navbatdagi elementi end; var head: TPStudent; // ro'yxat boshi // ro'yxat boshiga element qo'shish procedure TForm1.Button1Click(Sender: TObject); var curr: TPStudent; // ro'yxatning yangi elementi begin new(curr); // ro'yxat elementi uchun xotiradan joy ajratish curr^.f_name := Edit1.Text; curr^.l_name := Edit2.Text; // ro'yxat boshiga qo'shish curr^.next := head; head := curr; // kiritish maydonini tozalash Edit1.text:=''; Edit2.text:=''; end; // ro'yxatni chiqarish procedure TForm1.Button2Click(Sender: TObject); var curr: TPStudent; // royxatning joriy elementi n:integer; // ro'xat uzunligi (elementlar soni) st:string; // ro'yxatni satrli keltirish begin n := 0; st := ''; curr := head; // ro'yxatning birinchi elementiga ko'rsatkich while curr <> NIL do begin n := n + 1; st := st + curr^.f_name + ' ' + curr^.l_name +#13; curr := curr^.next; // navbatdagi elementga ko'rsatkich end; if n <> 0 then ShowMessage('Ro`yxat:' + #13 + st) else ShowMessage('Ro`yxatda element yo`q.'); end; end. Ro‘yhatga element qo‘shish TForm1.Button1Click protsedurasida amalga oshiriladi. Bu protsedura dastlab dinamik o‘zgaruvchi-yozuv yaratadi, unga muloqot oynasidagi maydonlarning qiymatini o‘zlashtiradi va head ko‘rsatkichining qiymatini to‘g‘rilaydi. Ro‘yhatni chiqarish Ko‟rsatish tugmasi bosilganda bajariluvchi TForm1.Button2Click protsedurasida amalga oshiriladi. Ro‘yhat elementlariga murojaat etish uchun curr ko‘rsatkichidan foydalaniladi. Dastlab u ro‘yhatdagi birinchi elementning adresiga ega bo‘ladi. Ro‘yhatning birinchi elementi qayta ishlab bo‘lingandan so‘ng, curr ko‘rsatkichiga next buyrug‘i yordamida ro‘yhatning navbatdagi elementining adresi o‘zlashtiriladi. Shu tariqa ko‘rsatkich ro‘yhat bo‘yicha o‘zgartirib boriladi. Bu jarayon ro‘yhatdagi joriy elementning next maydonining qiymati NIL (nol) ga teng bo‘lgungacha davom etadi. Tartiblangan ro‟yhat Qoidaga asosan ro‘yxat tartiblangan bo‘ladi. Ro‘yxat elementlarini tartiblanish ketma- ketligi mavjud maydonlardan biri bilan aniqlanadi. Masalan, xodimlar haqidagi ma‘lumotlar odatda familiya bo‘yicha tartiblanadi. Elementni ro‟yxatga qo‟shish Ro‘yxatga elementni qo‘shish ko‘rsatkichni o‘zgartirish yo‘li bilan amalga oshiriladi. Tartiblangan ro‘yxatga element qo‘shish uchun dastlab shunday elementni topish kerakki, yangi element undan keyin joylashsin. So‘ngra ko‘rsatkichni o‘zgartirish kerak bo‘ladi. Yangi elementning ko‘rsatkichini topilgan element ko‘rsatayotgan elementga o‘rnatamiz. Topilgan element ko‘rsatkichini esa yangi elementga o‘rnatamiz. Obidov Obidov Ochilov Olimov Olimov Navbatdagi dastur Familiya maydoni bo‘yicha tartiblangan ro‘yhatni tashkil qiladi. Ma‘lumotlar Edit1 va Edit2 tahrirlash maydoniga kiritiladi va Qo‟shish tugmasi bosilganda ro‘yhatga tartib bo‘yicha qo‘shiladi. unit dlist2_; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Button1: TButton; Button2: TButton; Label3: TLabel; Edit1: TEdit; Edit2: TEdit; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormActivate(Sender: TObject); private { Private declarations } public { Public declarations } end; Download 5.01 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling