43-400 Cieszyn, Plac Wolności 7b +48 33 85 211 32
baner
baner
baner
baner
 
Pascal - Operacje na plikach
Znamy już wiele komend w języku Pascal. Zawsze jednak działaliśmy w obrębie programu. Teraz nauczymy się obsługiwać pliki tekstowe.

>>Otwieranie i zamykanie plików

Aby wykonać jakąkolwiek operację na pliku należy go najpierw otworzyć. W programie najpierw tworzymym zmienną plikową. Typ zmiennej nosi nazwę "TextFile". Gdy już ją zadeklarujemy musimy wskazać miejsce gdzie znajduje się plik. Następnie musimy otworzyć plik przez procedurę Reset. Na koniec usuwamy uchwyt do pliku procedurą CloseFile.

program Project15;

var
F:TextFile;
begin
AssignFile(F,'c:\plik.txt');
Reset(F);
writeln('Plik otwarty');
CloseFile(F);
writeln('Plik zamkniety');
readln;
end.

Ścieżkę do pliku, który musi isnieć na dysku, przekazujemy do zmiennej plikowej poprzez procedurę AssignFile. W nawiasie wpisujemy najpierw zmienną plikową, a po przecinku ścieżkę do pliku. Procedura Reset otwiera plik w trybie tylko do odczytu, co oznacza, że do pliku nie możemy nic zapisać, a jedynie z niego czytać.

>>Tworzenie nowych plików

Aby utworzyć plik na dysku, zastępujemy Reset procedurą Rewrite. Jeśli plik nie istnieje zostanie utworzony we wskazanym miejscu. Jeśli taki plik istnieje jego zawartość zostanie wyczyszczona. Procedura Rewrite umożliwia nam zapisywanie danych do pliku.

program Project16;

var
F:TextFile;
begin
AssignFile(F,'c:\plik2.txt');
Rewrite(F);
writeln('Plik utworzono pomyslnie');
CloseFile(F);
writeln('Plik zamkniety');
readln;
end.

>>Odczyt danych z pliku

Aby odczytać dane z pliku otwieramy go w trybie do odczytu. Następnie w petli while odczytujemy kolejne wiersze. Dostęp do nich uzyskujemy korzystając ze znanej funkcji Readln.

program Project17;

var
F:TextFile;
linia:string;
begin
AssignFile(F,'c:\plik.txt');
reset(F);
while not Eof(F) do
begin
Readln(F, Linia);
Writeln(Linia);
end;
CloseFile(F);
readln;
end.

Odczytujemy kolejne linie w pętli while, która sprawdza czy następił koniec pliku. (EOF = End Of File). Aby pobrać tekst w linii korzystamy z Readln. Różnicą jaka występuje pomiędzy pobieraniem danych od użytkownika a odczytem z pliku jest taka, że w nawiasie wpisujemy nazwę zmiennej plikowej. Następnie na ekranie, nie w pliku, wyświetlamy ją. Readln odczytuje całe linię. Jeśli chcemy odczytywać dane po literce używamy read.

>>Zapis danych do pliku

Nadszedł czas na zapisywanie danych. Po pierwsze otwieramy plik w trybie do zapisu. Po drugie jak łatwo się domyślić, dane będziemy zapisywać za pomocą Writeln. Zachęcam do samodzielnej analizy.

program Project18;

var
F:TextFile;
linia:string;
begin
AssignFile(F,'c:\plik.txt');
Rewrite(F);
Writeln(F,'Kurs');
Writeln(F,'Pascala');
Writeln(F,'by');
Writeln(F,'Astaz3l');
Writeln('Dane zapisane pomyślnie');
CloseFile(F);
readln;
end.

>>Dopisywanie danych

Jeśli chcemy dopisać dane na końcu pliku musimy użyć procedury Append. Po jej użyciu dane nie zostaną usunięte z pliku. Używamy jej w zastępstwie procedury Rewrite.

...
AssignFile(F,'c:\plik.txt');
Append(F);
Writeln(F,'!!!');
Writeln('Dane dopisane pomyslnie');
CloseFile(F);
...



Powrót