Matnli fayllarni kiritish va chiqarish.
Append(VAR F : text), Readln(VAR F : text; V1 [,V2,...Vn]), Writeln(VAR F : text; V1 [,V2,...Vn]), Yeoln(VAR F: text), Eof(VAR F:text), SeekEoln(VAR F: text), SeekEof(VAR F: text), Flush(VAR F: text), SetTextBuf(VAR F : text; VAR Buf[; size : word]) protsedura va funksiyalari
Matli fayllar uz spetsifikasiga ega. Read ukish va Write yozish protseduralarining maxsus kengaytmasi belgili bulmagan tiplar bilan ishlash imkoniyatini beradi.
Read(F, Ww) larning chakirilishi, bu yerda Ww - word tipidagi uzgaruvchi, sonlar ketma-ketligini F faylidan ukib, Ww.uzgaruvchisiga uzlashtiradi. Boshqa xollarda dasturda xatolikka olib keladi.
Matinli fayllarni ochishni standart usullarda olib borish mumkin:
Fayl uzgaruvchisiga mos fayl nomini kuyish ( Assign protsedurasi), yangi matn faylini ochish ( Rewrite protsedurasi);
yoki fayl uzgaruvchisiga mos fayl nomini kuyish ( Assign protsedurasi ), bor faylni ochish (protsedura Reset).
Matinli fayllar uzining spetsifikatsiyasiga karab, ukish yoki yozish operatsiyalaridan bittasi bilan ishlash imkoniyatini beradi. Shuning uchun matnli fayllar bilan ishlashda yana bitta protsedura ,faylni ochish protsedurasi paydo buladi:
Append(VAR F : text);
Bu protsedura faylni ochib, kursorni fayl oxiriga keltirib kuyyadi. Append protsedurasiga kuyiladigan talablar xam xuddi Reset va Rewrite protseduralariga kuyilgan talablarga uxshash.
Matinli fayllarni kayta ishlash uchun Read va Write protseduralari kullaniladi. Readln protsedurasi katorlarni buluvchi maxsus til vositasi xisoblanadi. Uning vazifasi xuddi Read ning vazifasiga uxshash va ukishni kator oxirining markerigacha olib boradi va boshqa yangi katorga utishni ta’minlayladi. Writeln, protsedurasi xamma kattaliklarni yezishni ta’minlaydi. Protseduralar yezilishining Ko’rinishi kuyidagicha:
Readln(VAR F : text; V1 [,V2,...Vn]);
Writeln(VAR F : text; V1 [,V2,...Vn]);
bu yerda V1...Vn turli tipdagi uzgaruvchilar. Read va Readln protseduralari orasidagi fark nimada degan savolga kuyidagicha javob berish mumkin. Read protsedurasi berilganlarni xammasini bir katorga olib kirish imkonini beradi Readln operatsiyasi esa albatta bir kator tugagandan keyin avtomatik ravishda ikkinchi katorga utishni ta’minlaydi, ya’niy berilganlarni turli katorlardan olib kirish mumkin. Write va Writeln protseduralarida xam xuddi shunday.
Kiritish chiqarish operatsiyalarini bajarayetgan paytda maxsus Eoln, Eof, SeekEoln, SeekEof funksiyalaridan tashkil topgan til vositasini kullash mumkin.
Aagarda faylning joriy pozitsiyasi fayl oxiri markerida turgan bulsa Yeoln(VAR F: text) funksiyasi, True ning bulev kiymatini kaytaradi. Kolgan xamma xolatlarda funksiyaning kiymati False buladi.
Agarda kursor oxirgi komponentadan keyin turgan bulsa, Eof(VAR F: text) True ning bulev kiymatini kaytaradi, aksi xolda False buladi.
Misol. Matnli faylning birinchi katoridan oltita ketma-ket belgilarni ukish.
VAR
F: text;
St: string[6];
BEGIN Assign(F, 'EXAMPLE.PAS'); { EXAMPLE.PAS fayli bor bulishi kerak } Reset(F);
WHILE NOT Eoln(F) DO BEGIN { birinchi kator oxirini tekshirish }
Read(F, St);
Writeln('St = ', St); { ekranga chiqarish }
END;
Readln(F); { 2- katorga utish }
Close(F);
END.
SeekEoln(VAR F: text) funksiya kursor kator oxirida turganda True ning bulev kiymatini kaytaradi. Aksi xolda funksiya False kiymatni kaytaradi.
SeekEof(VAR F: text) funksiyasi agarda ko’rsatkich fayl oxiri markerida turgan bulsa True ning kiymatini kaytaradi. Bu funksiyalarni kullash tekisli fayllardan sonli kiymatlarni ukishda kulaylik yaratadi. Diskdagi matnli fayllar bilan tashki dastur orasidagi axborot almashuvini kurib chikamiz. Berilganlarni olib kirish uchun operativ xotiradagi kiritish- chiqarish buferidan foydalanamiz.
Paskal tilida standart kiritish chiqarish buferi 128 bayt xajmga ega buladi. Xar kaysi ochilgan faylga uzining buferi kuyiladi. Tashki axborot tashuvchilariga murojat kilishni optimallashtirish vazifasi kuyiladi.
Masalan , Writeln protsedurasi xamma berilganlarni buferga ketma-ket yezadi. Oxirgi bufer band bulgan xolatdagina yezuvlar tashki kurilmaga yeziladi. Yezuvlarni diskga kuchirib bulgandan sung bufer keyiggi axborot kabul kilish uchun bushaydi. Yezuvlarni bu tartibda yezish juda kup vaktni oladi Shuning uchun maxsus kiritilgan Flush(VAR F: text) protsedurasi Write va Writeln protseduralari yerdamida yezuvlarni diskdagi fizik yezuvlar bilan boglash imkoniyatini beradi. Protsedurani chakirish yezish uchun berilgan xamma belgilarni xakikiyligini ularni tashki faylga yezilishini garantiyalaydi. Bu protsedularni Rewrite va Append. protseduralari orkali ochilgan matnli fayllar uchun kullash mumkin. Amaliy dasturlarda bu protseduralardan kisman foydalanilmaydi.
Amaliyetda matnli fayllarni kayta ishlash xotiradagi xamma fayllarni sanab chikish va undan keyin fayllarni diskga yezish uchun xizmat kiladi.
SetTextBuf(VAR F : text; VAR Buf[; size : word]) protsedura
F fayliga Size xajmdagi uzining kiritish- chiqarish Buf ni o’rnatish imkonini beradi Size parametri chakirishda tashlab ketilishi mumkin.U xolda bufer ulchovi SizeOf(Buf) ga mos buladi. F fayl uzgaruvchisiga SetTextBuf ning kuyilishi uzgaruvchiga yangi tashki faylni kullashgacha tarkalishi mumkin.
Misol. Kiritish- chiqarish buferini kuyilishi
VAR
F: text;
Ch: char;
Buf: array[1..2048] of char; { bufer 2 Kbayt }
BEGIN
Assign(F, ParamStr(1)); { komanda katoridan faylga nom kuyish }
SetTextBuf(F, Buf); { faylga 2 Kbayt buferni o’rnatish }
Reset(f);
WHILE NOT Eof(F) DO BEGIN { faylni ekranga chiqarish }
Read(F, Ch);
Write(Ch);
END;
END.
Do'stlaringiz bilan baham: |