Lucrul cu fisiere textPoate vi s-a intamplat vreodata sa aveti ceva de salvat pentru ziua urmatoare si sa realizati ca nu o puteti face cu variabilele obisnuite.
Pascal-ul va vine in ajutor cu o variabila speciala, si anume variabila de tip
fisier. Prin intermediul fisierelor, puteti scrie informatia pe disc, si astfel o puteti pastra.
Declararea unei astfel de variabile se face astfel:
var
<variabila> : Text;
Totusi, doar cu aceasta variabila (din memorie) nu putem realiza nimic, deci va trebui sa-i asignam (atribuim) un fisier
fizic de pe disc.
Atribuirea se face in felul urmator:
Assign( <variabila_text>, <nume_fisier_text> );
Aceasta inseamna ca in momentul in care vom dori sa efectuam operatii asupra fisierului, vom folosi variabila de tip text.
Atentie! Daca fisierul nu se afla in acelas director cu programul, va trebui sa specificam intreaga cale (ex: C:\fisier.txt).
Operatii asupra fisierelor text
Putem efectua asupra fisierelor text cateva operatii cum ar fi cea de citire a informatiilor, de scriere, de stergere sau de redenumire.
Pentru a citi sau scrie intr-un fisier, aceasta trebuie deschis. Imaginati-va ca ati primit o scrisoare de la un prieten si vreti s-o cititi. Prima data trebuie s-o deschideti pentru a ii vedea continutul.
Asa este si in programare. Fisierele trebuie deschise pentru citire, respectiv pentru scriere.
Citirea din fisierele textDeschiderea unui fisier text pentru citire se face astfel:
ReSet( <variabila_text> );
Asupra unui fisier deschis la citire putem, evident, efectua NUMAI aceasta operatie. Citirea se face in mod normal, caracter cu caracter, ca si cum am vrea sa citim o variabila de la tastaruta, numai ca terbuie specificat un parametru la inceput.
Read( <variabila_text>, <variabila1>, <variabila2>);
{ respectiv }
ReadLn( <variabila_text>, <variabila1>, <variabila2>); { daca dorim sa positionam cursorul pe urmatorul rand }
Desigur, in ambele variante se pot adauga oricate variabile (in masura dimensiunii fisierului), dar eu m-am oprit la doar la doua.
Tipul variabilelor care vor stoca informatia continuta in fisier este foarte important. Daca avem doua variabile de tipul
byte (a si b), ar fisierul arata astfel
Acesta este un text.
La executia programului vom avea parte de o surpriza, si anume eroarea 106 (Invalid Numeric Format), deoarece o variabila byte nu poate contine litere.
De asemenea, tin sa precizez ca in cazul variabilelor de tip ordinal (mai putin cele
char), spatiile goale vor fi sarite.
Cand alcatuim un algoritm, deseori vom fi nevoiti sa testam daca am ajuns la sfarsitul liniei sau fisierului. Pentru aceasta avem functiile:
EoLn( <variabila_text> ): Boolean { pentru a testa daca am ajuns la sfarsitul liniei -> EoLn = [b]E[/b]nd [b]O[/b]f [b]L[/b]i[b]n[/b]e }
{ respectiv }
EoF( <variabila_text> ): Boolean { pentru a testa daca am ajuns la sfarsitul fisierului -> EoF = [b]E[/b]nd [b]O[/b]f [b]F[/b]ile}
Scrierea in fisiere textDeschiderea unui fisier text pentru scriere se face astfel:
ReWrite( <variabile_text> );
Pentru a scrie intr-un fisier, vom folosi procedurile
Write (respectiv
WriteLn), si anume:
Write( <variabila_text>, <variabila1>, <variabila2>);
{ sau }
WriteLn( <variabila_text>, <variabila1>, <variabila2>);
Atentie! In cazul in care un fisier deschis la scriere nu exista, acesta va fi creat. Daca exista, toata informatia pe care o contine va fi stearsa.
Adaugarea in fisiere textAdaugarea in fisierele text se poate face intr-un mod mai educativ, folosind procedurile ReSet si ReWrite (deschidem fisierul sursa pentru citire, deschidem un fisier pentru scriere, copiem toata informatia din primul in al doilea, inchidem primul fisier si continuam cu scrierea in cel de-al doilea; apoi in stergem pe primul, si il redenumim pe al doilea cu numele celui dintai).
Desigur, lucrurile pot fi mult simplificate, folosind intructiunea Append, si anume:
Append( <variabila_text> );
Aceasta va deschide respectivul fisier si va muta cursorul la sfarsitul acestuia, urmand ca noi sa continuam scrierea in el. Daca fisierul specificat nu exista, va fi generata o eroare.
Scrierea se face in modul explicat mai sus.
Inchiderea fisierelorOrice fisier care a fost deschis, indiferent pentru ce (citire / scriere / adaugare) trebuie sa fie inchis, dupa ce s-a terminat treaba cu el.
Vom observa ca in cazul in care uitam sa inchidem un fisier deschis pentru scriere / adaugare, informatia nu va fi scrisa / adaugata. Inchiderea fisierelor se realizeaza astfel:
Close( <variabila_text> );
Redenumirea fisierelor textUn fisier poate fi redenumit doar daca este inchis. Redenumirea se face folosind procedura ReName
ReName( <variabila_text>, <nume_nou> );
Stergerea fisierelor textAsemenea operatiei de redenumire, un fisier poate fi sters doar daca este inchis. Stergerea se face astfel:
Erase( <variabila_text> );
Deseori avem de citit informatia doar din fisere text. La un moment dat devine iritand sa precizam la fiecare citire / scriere variabila de tip text ca parametru, astfel incat exista o solutie sa inlaturam acest lucru: redirectand intrarea / iesirea standard catre fisier. Acest lucru se realizeaza foarte usor, si anume:
Citirea:Assign(input, <nume_fisier_text>);
ReSet(input);
ReadLn(s); {va citi variabila s din fisier}
Scrierea:Assign(output, <nume_fisier_text>);
ReWrite(output);
Write('Bla bla'); {va scrie textul in fisier}
Cam atat despre fisierele text. Pentru eventuale nelamuriri postati aici. Bafta!
AdyX