W tej lekcji nauczysz się tworzyć i edytować pliki tekstowe. Pomoże Ci w tym moduł system (jest on dostępny cały czas, więc nie musimy deklarować jego użycia). Pod spodem znajduje się tabelka ze wszystkimi możliwościami modułu systemu.
Tabelka 6: Moduł SYSTEM
| Nazwa | Opis |
| Append | Ustawia się na końcu pliku |
| Assign | Kojarzy zmienną plikową ze zbiorem danych |
| Close | Zamyka otwarty plik |
| Eof | Sprawdza czy koniec pliku |
| Eoln | Sprawdza czy koniec wiersza |
| Erase | Usuwa plik skojarzony ze zmienną plikową |
| FilePos | Podaje aktualną pozycję zbioru |
| Filesize | Podaje aktualny rozmiar zbioru |
| Getdir | Informacje o bieżącym pliku |
| Mkdir | Tworzy nowy katalog |
| Read | Podstawia wiersz z pliku pod zmienną |
| Readln | J/w tylko że schodzi do następnej linii |
| Reset | Ustawia zmienną plikową na początku pliku |
| Rewrite | Tworzy plik lub kasuje dane, jeśli istnieją |
| RmDir | Usuwa pusty katalog |
| Seek | Ustawia zminną plkową na żądanym miejscu w zbiorze |
| SeekEof | Działa jak eof, ale ignoruje spacje |
| SeekEoln | Działa jak eoln, ale ignoruje spacje |
| Truncate | Usuwa wszystko od miejsca w którym się znajduje do końca pliku |
| Write | Zapisuje znaki do pliku |
| Writeln | J/w tylko że schodzi do następnej linii |
Program 027 - Tworzenie pliku txt
program prog027;
uses crt;
var
miejsce,name:string;
plik:text; {1}
procedure newfile;
begin
write('Podaj ścieżkę dostepu gdzie ma być utworzony plik:');
readln(miejsce);
write('Podaj nazwę pliku');
readln(name);
miejsce:=concat(miejsce,name); {2}
assign(plik,miejsce); {3}
rewrite(plik);
close(plik);
end;
begin
clrscr;
newfile;
readkey;
end.
Objaśnienia:
{1} zmienna plik musi być typu text (standardowy typ pliików)
{2} Podajemy ściężkę dostępu oraz nazwę pliku, a następnie łaczymy je ze sobą przy pomocy funkcji CONCAT
{3} za pomocą procedury ASSIGN zmienna plik zostaje powiązana ze zbiorem danych (czytaj: plikiem), znajdującym się na dysku. Procedura rewrite tworzy nowy plik lub wymazuje jego zawartość (jeśli istnieje). Pocedura close zamyka plik.
Powyższy programik przedstawia schemat tworzenia pliku tekstowego, jednak plik w nim utworzony powstał tylko teoretycznie. Teraz utworzmy go praktycznie:
Program 028 - Tworzenie roboczego pliku txt
program prog028;
uses crt;
var
miejsce:string;
plik:text;
procedure newfile;
begin
miejsce:='c:\probny.txt';
assign(plik,miejsce);
rewrite(plik);
close(plik);
end;
begin
clrscr;
newfile;
readkey;
end.
Dobra, plik został utworzony, ale nic nie jest w nim zapisane. Żeby umieścić w nim dane popatrz na program poniżej:
Program 029 - Zapisywanie inf. do pliku
program prog029;
uses crt;
var
miejsce:string;
plik:text;
procedure tekst;
begin
miejsce:='c:\probny.txt';
assign(plik,miejsce);
append(plik);
writeln(plik,'www.progcorner.prv.pl :>');
close(plik);
end;
begin
clrscr;
tekst;
readkey;
end.
Objaśnienia:
To działa :>. W porównaniu do poprzednich programów w tym procedura rewrite została zastąpiona przez append. Dlaczego? Ponieważ nie tworzymy nowego pliku, a korzystamy już z utworzonego. Czas na następny program:
Program 030 - Zapisywanie inf. do pliku, aż nie wciśniemy ESC
program prog030;
uses crt;
var
miejsce:string;
tend:byte;
tekst:string;
plik:text;
procedure ttekst;
begin
miejsce:='c:\probny.txt';
tend:=0; assign(plik,miejsce);
append(plik);
repeat
writeln('Wpisz tekst:');
readln(tekst);
writeln(plik,tekst);
writeln('Dalej/Zakończ wpisywanie [cos/esc]');
if readkey=#27 then tend:=1;
until tend:=1;
close(plik);
end;
begin
clrscr;
ttekst;
readkey;
end.
Objaśnienia:
Tekst będzie wpisywany tak długo aż naciśniemy klawisza ESC.
Wiecie jak wpisać informacje do pliku, a poniższy programik pokaże Wam jak je wyciągnąć:
Program 031 - "Wyciąganie" danych z pliku
program prog031;
uses crt;
var
miejsce:string;
tekst:string;
plik:text;
procedure ttekst;
begin
miejsce:='c:\probny.txt';
assign(plik,miejsce);
reset(plik); {1}
while not eof(plik) do {2}
begin
readln(plik,tekst); {3}
writeln(tekst);
end;
close(plik);
end;
begin
clrscr;
ttekst;
readkey;
end.
Objaśnienia:
{1} Procedurę append zastąpilem reset, ponieważ powoduje ona ustawienie się zmiennej plikowej na początku pliku.
{2} Funkcja Eof może przyjąć dwie wartości True/False. Tę pierwszą osiąga gdy wczyta ostatnię linijkę pliku. Czyli pętla while będzie wykonywana, dopóki cała zawartość pliku zostanie wyświetlona na ekranie.
{3} Procedura Readln powoduje podstawienie pod zmienną plikową tekst jednej linijki pliku, następnie schodzi o jedną w dół.
Mam nadzieję że wszystko jest jasne. Zostały jeszcze dwie funkcje do omowienia: Del i Rename. Najpierw zajmę się tą pierwszą:
Program 032 - Usuwanie pliku
rogram prog032;
uses crt;
var
miejsce:string;
plik:text;
procedure ttekst;
begin
miejsce:='c:\probny.txt';
assign(plik,miejsce);
reset(plik);
close(plik)
erase(plik);
end;
begin
clrscr;
ttekst;
readkey;
end.
Program 033 - Zmiana nazwy pliku
program prog033;
uses crt;
var
miejsce:string;
nazwa:string;
plik:text;
procedure ttekst;
begin
miejsce:='c:\';
assign(plik,miejsce+'probny.txt');
reset(plik);
close(plik);
write('Podaj nowš nazwę pliku (nazwa_pliku.XXX):');
readln(nazwa);
rename(plik,miejsce+nazwa); end;
begin
clrscr;
ttekst;
readkey;
end.
Kask