Sunteți pe pagina 1din 4

Tehnologia Informaţiei şi Programare în Cadastru, semestrul III, Cursul 12

PROCEDURI ŞI FUNCŢII PENTRU LUCRUL CU FIŞIERE

ASSIGN

Asociază numele unui fişier cu calea acestuia într-o variabilă.

Sintaxă de utilizare:
Assign(var f; calea+numele întreg al fişierului);

Observaţii:
• f poate fi o variabilă de tip fişier, iar fişierul acesta poate fi de orice tip. Orice altă
operaţiune ulterioară cu acest fişier va fi facută prin intermediul variabilei f.
• f este un nume generic dat în aceste exemple pentru variabila de tip text, dar poate
avea orice nume şi, de asemenea, pot fi declarate mai multe variabile de acest fel
simultan.
• După ce se realizează asocierea între un fişier şi variabila f, aceasta se menţine
până când se face o altă asociere pe aceeaşi variabilă.
• Numele fişierului constă în calea acestuia ce poate să conţină partiţia, unul sau
mai multe directoare separate cu backslash numele fişierului şi extensia acestuia.

Exemplu:
D:\Lucru\Ex_Stud\fistext.txt

Dacă o cale începe direct cu backslash, se consideră partiţia ca fiind partiţia curentă
iar dacă nu se specifică nici alt director, se consideră directorul curent.
Numele fişierului constă în maximum 8 caractere, urmate de punct şi de extensia
formată din maximum 3 caractere iar întreaga lungime a căi specificate + numele fişierului
nu trebuie să depăşescă 79 de caractere.

Restricţii:
Acestă procedură nu poate fi utilizată pe un fişier care este deschis de o altă
aplicaţie sau subrutină.

REWRITE

Creează şi deschide un nou fişier.

Sintaxă:
Rewrite(var F: File ; marimefisier: Word ]);

Observaţii:
• F este o variabilă ce corespunde oricărui tip de fişier ce a fost asociat variabilei F
în prealabil cu comanda assign.

1
Tehnologia Informaţiei şi Programare în Cadastru, semestrul III, Cursul 12

• marimefisier este o expresie opţională care poate fi specificată numai dacă F este
un fişier nedefinit, marimefisier definind marimea înregistrărilor ce pot fi folosite în
transferul de date. Daca marimefisier nu este specificat, valoarea de 128 bytes este
alocată automat.
• Rewrite creează un fişier nou, cu numele asociat prin variabila F. Dacă respectivul
fişier există deja, el va şi şters şi un nou fişier gol va fi creeat în locul lui. Dacă fişierul
existent era şi deschis, acesta va fi mai întâi închis şi apoi recreeat. Poziţia curentă a
cursorului în interiorul fişierului va fi setată la începutul fişierului gol.
• Cu condiţia {$I-} activată, funcţia IOResult devine 0 când operaţia de creeare a
fost îndeplinită cu succes, altfel întoarce o valoarea diferită de 0.

RESET

Deschide un fişier existent.

Sintaxă:
Reset(var F : File; marimefisier: Word ]);

Observaţii:
• F este o variabilă ce corespunde oricărui tip de fişier ce a fost asociat variabilei F
în prealabil cu comanda assign.
• F marimefisier este o expresie opţională care poate fi specificată numai dacă F
este un fişier nedefinit, marimefisier definind marimea înregistrărilor ce pot fi folosite în
transferul de date. Daca marimefisier nu este specificat, valoarea de 128 bytes este
alocată automat.
• Reset deschide pentru citire sau scriere un fişier asociat prin variabila F. Dacă
fişierul F nu există apar erori. Dacă fişierul corespunzător lui F este deja deschis spre
editare, acesta va fi mai întai închis.
• Poziţia cursorului în cadrul fişierului va fi stabilită la începutul acestuia.
• Situaţia în care cursorul ajunge la sfârşitul fisierului curent este verificată prin
intermediul variabilei Eof(F) unde F este variabila asociată fişierului curent, care devine
true dacă s-a ajuns la finalul fişierului şi rămâne false pentru alte poziţii ale cursorului în
cadrul fişierului curent.

CLOSE

Închide un fişier deschis spre editare sau citire.

Sintaxă:
Close(var F);

Observaţii:
• F este variabila de tip fişier, iar acesta a fost deschis în prealabil cu una din
procedurile Reset, Rewrite sau Append. Fişierul asociat lui F este, prin intermediul acestei
proceduri, updatat şi închis, eliberând sistemul de operare de utilizarea acestuia.
2
Tehnologia Informaţiei şi Programare în Cadastru, semestrul III, Cursul 12

• Utilizând condiţionarea {$I-}, funcţia IOResult va deveni 0 dacă operaţiunea


de închidere s-a efectuat cu succes sau va avea valori diferite de 0 daca a survenit vreo
eroare în închiderea fişierului.

APPEND

Deschide un fişier pentru adaugarea de înregistrări în acesta.

Sintaxă:
Append(var f: Text);

Observaţii:
• F este o variabilă asociată căii şi fişierului cu care dorim să lucrăm.
• Append deschide fişierul corespunzător lui F. Dacă acesta nu există apar erori iar
dacă acesta a mai fost deschis în prealabil, el va fi închis, apoi redeschis. Spre deosebire
de ReWrite, după deschidere, pozionarea cursorului în cadrul fişierului se face la sfârşitul
acestuia.
• Testarea efectuării cu succes a acestei proceduri se face ca si în cazurile
anterioare cu ajutorul directivei condiţionale {$I-} şi a funcţia IOResult.

Exemplu de utilizare a acestor comenzi:

Exemplul 1 – Creearea unui fişier, scrierea şi citirea din el.


program lucru_fisiere;
uses wincrt;
var
f:text; -poate fi declarată ca text sub Windows şi de tip file sub DOS
temp:string;
begin
{$I-}
assign(f,'D:\test.txt'); -se face asocierea unui fişier la variabila f
if IOResult=0 then writeln('Asocierea s-a facut cu
succes!'); - se verifică acest lucru
rewrite(f); -se creează şi se deschide fişierul
if IOResult=0 then writeln('Deschiderea s-a facut cu
succes!');
writeln(f,'TEXT TEST SCRIS INTR-UN FISIER!!!'); -se scrie un
text în fişierul deschis
close(f); - se închide fişierul
if IOResult=0 then writeln('Inchiderea s-a facut cu
succes!');
reset(f); -se deschide fişierul
while not Eof(f) do
begin

3
Tehnologia Informaţiei şi Programare în Cadastru, semestrul III, Cursul 12

readln(f,temp); -se citeşte conţinutul


acestuia
writeln(temp); -se afişează pe ecran
conţinutul
end;
close(f); - se închide fişierul
end.

Exemplul 2 – Copierea conţinutului unui fişier sursă într-un fişier destinaţie,


precum şi creearea acestuia din urmă.

program copiere_fisiere;
uses wincrt;
var
f1,f2:text; - se declară două variabile de tip text pentru cele două fişiere
temp:string;

begin
assign(f1,'D:\test.txt'); -se asociază căi şi nume de fişiere pentru
cele două variabile
assign(f2,'D:\test1.txt');
reset(f1); -se deschide fişierul sursă
rewrite(f2); -se creează şi deschide fişierul destinaţie
while not Eof(f1) do
begin
readln(f1,temp); -se copie rând cu
rând conţinutul primului fişier în cel de-al doilea, atât timp cât nu se ajunge la finalul primul
fişier (sursă)
writeln(f2,temp);
end;
close(f1); - se închid cele două fişiere
close(f2);
end.

O atenţie deosebită trebuie acordată aici celor două proceduri, de citire şi de scriere.
Dacă nu se specifică nici o destinaţie, write şi read folosesc consolele standard de
intrare ieşire, adică tastatura şi monitorul. Concret, se citeşte de la tastatură şi se scrie pe
ieşirea de monitor.
De asemenea, se observă că testarea îndeplinirii cu succes a procedurilor legate de
fişiere este opţională, în al doilea exemplu nemaifacându-se acest lucru.
Lucrul cu fişierele este extrem de util îndeosebi în programele legate de topografie şi
geodezie, facând posibilă introducerea numai o dată a datelor de intrare, citirea lor din
fişiere eliminand posiblilitatea de a transcrie greşit aceste valori şi munca legată de
introducerea lor, de fiecare dată.