Pascal - Rad sa tekstualnim datotekama.

Član
Učlanjen(a)
19.04.2010
Poruka
1.381
O datotekama uopsteno:

Svrha postojanja datoteka u svim programskim jezicima je permanentno cuvanje podataka. Cesto su nam podaci koje program obradi potrebni i posle njegovog zavrsavanja, pa ih iz tog razloga memorisemo u datoteke. Takodje, besmisleno je raditi unos velikog broja podataka u program preko tastature, vec se za to isto mogu koristiti vec pripremljene datoteke.

Datoteka sa svojim sadrzajem je fizicki smestena van programa i nalazi se na permanentnom mediju ( kao sto su Hard Disk ili diskete ).

Sa stanovistva Pascal-a datoteka se sastoji od sekvencijalno poredjanih elemenata. Karakteristicno je to da je u svakom trenutku jedan element markiran i zove se tekuci element. Tekuci element moze biti jedan od postojecih ili novi ( tj. jedan iza poslednjeg postojeceg u sekvenci ). Zbog toga i prazna datoteka ima tekuci element. Procedure i funkcije se izvrsavaju implicitno nad tekucim elementom, npr. prilikom pisanja ili citanja uvek se pristupa tekucem elementu.

Pascal raspoznaje tri razlicita tipa datoteka, od kojih standardnu primenu imaju prve dve:

-tekstualna datoteka
-tipizirana datoteka
-netipizirana datoteka

U ovom tekstu cu se pozabaviti samo tekstualnim datotekama posto se ostali slucajevi redje koriste.

O tekstualnim datotekama:

U Pascalu se ovaj tip datoteke intezivno koristi. Tekstualna detoteka predstavlja poseban tip podataka i postoji posebno rezervisano ime za ovaj tip: text.

Primer deklarisanja tekstualne datoteke:

var datoteka:text;

Osnovni element tekstualne datoteke je znak ( char ). Posto ovakva datoteka sadrzi tekst ( ne formalne podatke ), u nju se pise i iz nje se cita pomocu stringova.

Datoteke ove vrste postoje nezavisno od programa, imaju spoljnje identifikatore i u programu se moraju povezivati sa spoljnjim imenom koje je nezavisno od programa. To se postize procedurom Assign. Pristup datoteci se vrsi pomocu procedure Rewrite, Reset i Append.

Procedura Rewrite formira datoteku na spoljasnjem mediju ako ona jos ne postoji, a ako vec postoji onda brise sav njen sadrzaj. Posle izvrsavanja ove procedure datoteka se sastoji od jedne prazne lokacije koja je tekuca. Treba jos napomenuti da ova procedura datoteku otvara u "write-only" rezimu, tj. kada otvorimo datoteku ovom procedurem u nju je moguce samo upisivanje.

Primer koriscenja procedure Rewrite:

var f:text; {deklarisanje tekstualne datoteke}
begin
assign(f,'C:\datoteka.txt'); {povezivanje datoteke sa spoljnjim imenom}
rewrite(f); {izvrsavanjem ove procedure pravi se datoteka "datoteka.txt" u C:\}

....

close(f); {posle upotrebe datoteka mora da se zatvori}
end.

Procedura Reset se koristi pod pretpostavkom da datoteka vec postoji nezavisno od toga da li sadrzi neke podatke ili je prazna. U svakom slucaju ona ( potencijalne ) podatke ne dira i postavlja prvi element za tekuci element. Ova procedura datoteku otvara u "read-only" rezimu, sto znaci da je ovom procedurom moguce samo citanje iz datoteke.

Primer koriscenja procedure Reset:

var f:text; {deklarisanje tekstualne datoteke}
begin
assign(f,'C:\datoteka.txt'); {povezivanje datoteke sa spoljnjim imenom}
reset(f); {otvaranje datoteke za citanje; datoteka mora da postoji!!!}

....

close(f); {posle upotrebe datoteka mora da se zatvori}
end.

Procedura Append otvara datoteku kao da je izvrsena procedure Reset, ali se marker tekuceg elementa postavlja na kraj datoteke i u nju sada mozemo upisivati nove podatke iza postojecih. Naravno i ovde se podrazumeva da datoteka vec postoji.

Primer koriscenja procedure Append:

var f:text; {deklarisanje tekstualne datoteke}
begin
assign(f,'C:\datoteka.txt'); {povezivanje datoteke sa spoljnjim imenom}
append(f); {datoteka ( mora postojati! ) je otvorena za nastavljanje upisivanja u nju }

....

close(f); {posle upotrebe datoteka mora da se zatvori}
end.

Napomena: Pre koriscenja datoteke potrebno je izvrsiti Reset, Rewrite ili Append!!!

Read/Readln se koristi za citanje podataka ( elemenata ) iz datoteke. Pri pozivu procedure se navodi ime datoteke i promenljiva u koju se smesta procitani sadrzaj datoteke.

Primer koriscenja procedure Read:

var f:text; {deklarisanje tekstualne datoteke}
s:string; {u ovu promenljivu se upisuje sadrzaj datoteke}
begin
assign(f,'C:\datoteka.txt'); {povezivanje datoteke sa spoljnjim imenom}
reset(f); {otvaranje datoteke za citanje; datoteka mora da postoji!!!}
repeat
read(f,s); {sadrzaj datoteke se prebacuje u promenljivu s}
until eof(f); {funkciju eof cu objasniti kasnje u tekstu}
close(f); {posle upotrebe datoteka mora da se zatvori}
end.

Write/Writeln se koristi za upisivanje podataka u datoteku i to u tekuci element. Posle upisivanja marker tekuceg elementa se pomera na sledecu lokaciju. Za razliku od Read, procedura Write moze da se izvede nad praznom lokacijom. Posle te operacije u praznu lokaciju se upisuje podatak i dodaje se nova prazna lokacija na sledecoj lokaciji, pa je tako moguce prosirivati datoteku u memoriji.

Primer koriscenja procedure Write:

var f:text; {deklarisanje tekstualne datoteke}
s:string; {u ovu promenljivu se upisuje sadrzaj datoteke}
begin
assign(f,'C:\datoteka.txt'); {povezivanje datoteke sa spoljnjim imenom}
append(f); {otvaranje datoteke za dopisivanje u nju; datoteka mora da postoji!!!}
write(f,s); {sadrzaj promenljive s se upisuje u datoteku}
close(f); {posle upotrebe datoteka mora da se zatvori}
end.

Funkcija EoF ( End of File ) je ugradjena funkcija koja vraca promenljivu logickog tipa (boolean ). Vrednost vracene promenljive je true, ako je kao tekuci oznacen element iza poslednjeg nepraznog ( tj. novi ). U suprotnom ova funkcija vraca false.

Od ostalih procedura i funkcija bitnih za rukovanje tekstualnim datotekama pomenucu jos neke. Close se koristi za zatvaranje datoteke. Funkcija eoln pokazuje kada naidjemo na kraj reda. Ova funkcija je u Pascalu izgubila znacaj, jer postoji readln koja ucitava ceo red odjednom.

Pa to bi bilo otprilike to. Mislim da vam je za pocetak rada sa datotekama ovo sasvim dovoljno, a ako budete imali neka pitanja ili komentare vezane za ovaj vodic slobodno ih postavite na sajt MyCity u foumu Delphi/Pascal/Kylix.


Preuzeto sa : Tutorijali.Net
 
Natrag
Top