Programujeme v Delphi: Textové súbory 1

Lukáš Kuzmiak  /  20. 08. 2003, 00:00

Dúfam, že Vás minulá časť nezničila úplne ??!! No, ale dosť bolo humoru ide sa na vec: Dnes si povieme o dokonalejšej práci so súbormi.


Je to veľmi jednoduché, ale nebudeme používať Open a Save Dialog. Takže úvod:

Ako pracujeme s textovým súborom
- používame funkcie read a write.
- Textový súbor obsahuje aj špeciálne znaky napr. alebo .... o tých sa dočítate nižšie.

Zoznam funkcií pre prácu so súbormi
- najskôr musím súbor definovať napr. var t:TextFile;
- potom musíme premennej súbor priradiť napr. AssignFile(t,'text.txt');
- nasleduje otvorenie súboru:
na čítanie Reset(t);
na zápis (ak existuje tak sa najskôr vyčistí) Rewrite(t);

- práca so súborom:
Read(t,........);
Readln(t,........);
Write(t,........);
Writeln(t,........);

- ukončenie práce so súborom CloseFile(t);



- - znamená End of Line (Koniec riadku) a - End of File (koniec súboru)
- riadok textového súboru = postupnosť znakov (aj prázdna) ukončená

Takže ak vidíme:
xyz
zy
x

Tak v skutočnosti to je:
|x|y|z|| |z|y||x|


Čítanie zo súboru
Príkaz Read(t,premenná); načíta zo súboru 1 znak zapíše ho do premennej a posunie sa o 1 znak ďalej (doprava). Príkazom readln(t) preskočíme všetky znaky v súbore až za najbližšiu značku (na konci súboru nerobí nič). Príkaz readln(t,z) je skrátený tvar pre read(t,z); readln(t);.Teraz konkrétny príklad (zistíme počet medzier v súbore text.txt):

var
t:TextFile;
z:char;
pocet:integer;
begin
AssignFile(t,'text.txt'); Reset(t);
pocet:=0;
while not Eof(t) do begin
read(t,z);
if z=' ' then inc(pocet);
end;
CloseFile(t);
Memo1.Lines.Add('Počet medzier v súbore '+IntToStr(pocet));
end;


Pre lepšie pochopenie ešte vysvetlím funkciu inc. Jej zápis je inc(nteger,integer); a teraz vysvetlenie: Táto funkcia vlastne pripočítava k premennej typu integer určitú hodnotu (to je tá druhá premenná). Ak nie je druhá premenná vyplnená (ako v našom príklade) funkcia pripočíta 1 (štandartné nastavenie). To by bolo pre dnešok všetko nejasnosti píšte na delphi@inet.sk. A stertneme sa opäť o týždeň.

P.S.: Dlho som nič nenapísal, lebo Peter Polakovič (šéfredaktor INET-u) asi vyhlásil politickú pasivitu, alebo čo. Odteraz budem články pridávať sám, lebo mám na to práva. PeTo SORRY



Neprehliadnite: