Bun venit pe SkullBox!

Bine ai venit, Vizitator. Trebuie să te autentifici sau să îţi creezi un cont.
Ai pierdut sau nu ai primit emailul care conţine codul de activare al contului?

Autentifică-te cu numele de utilizator, parola şi precizează durata sesiunii.
  Pagini: [1]
  Imprimă  
[Curs Pascal][Lectia 7]Lucrul cu fisiere  (Vizualizari 491)
AdyX
*

Deconectat Deconectat

Mesaje: 1061

WWW
[Curs Pascal][Lectia 7]Lucrul cu fisiere, Apr 05, 2008, 00:21

Lucrul cu fisiere text


Poate 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:

Cod:
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:

Cod:
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 text

Deschiderea unui fisier text pentru citire se face astfel:

Cod:
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.

Cod:
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

Cod:
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:

Cod:
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 text

Deschiderea unui fisier text pentru scriere se face astfel:

Cod:
ReWrite( <variabile_text> );
Pentru a scrie intr-un fisier, vom folosi procedurile Write (respectiv WriteLn), si anume:

Cod:
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 text

Adaugarea 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:

Cod:
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 fisierelor

Orice 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:

Cod:
Close( <variabila_text> );
Redenumirea fisierelor text

Un fisier poate fi redenumit doar daca este inchis. Redenumirea se face folosind procedura ReName

Cod:
ReName( <variabila_text>, <nume_nou> );
Stergerea fisierelor text

Asemenea operatiei de redenumire, un fisier poate fi sters doar daca este inchis. Stergerea se face astfel:

Cod:
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:
Cod:
Assign(input, <nume_fisier_text>);
ReSet(input);

ReadLn(s);   {va citi variabila s din fisier}
Scrierea:
Cod:
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
« Ultima modificare: Noi 10, 2008, 16:29 de către emi » Memorat
SkullAds
Ecspert
ReclAmator
* * * * *
Google AdSense

Gen: Bărbat
Mesaje: Multe

Reclama AdSense,
 

 
   


Pagini: [1]
  Imprimă  
 
Schimbă forumul:  

Ethical hacking and programming community
Powered by SMF 1.1.7 | SMF © 2006-2008, Simple Machines LLC
Traducerea în limba română © 2006-2007 www.smf.ro