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
AppendUstawia się na końcu pliku
AssignKojarzy zmienną plikową ze zbiorem danych
CloseZamyka otwarty plik
EofSprawdza czy koniec pliku
EolnSprawdza czy koniec wiersza
EraseUsuwa plik skojarzony ze zmienną plikową
FilePosPodaje aktualną pozycję zbioru
FilesizePodaje aktualny rozmiar zbioru
GetdirInformacje o bieżącym pliku
MkdirTworzy nowy katalog
ReadPodstawia wiersz z pliku pod zmienną
ReadlnJ/w tylko że schodzi do następnej linii
ResetUstawia zmienną plikową na początku pliku
RewriteTworzy plik lub kasuje dane, jeśli istnieją
RmDirUsuwa pusty katalog
SeekUstawia zminną plkową na żądanym miejscu w zbiorze
SeekEofDziała jak eof, ale ignoruje spacje
SeekEolnDziała jak eoln, ale ignoruje spacje
TruncateUsuwa wszystko od miejsca w którym się znajduje do końca pliku
WriteZapisuje znaki do pliku
WritelnJ/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