W programie można sprawdzać, czy istnieje plik fizyczny, z którego chce­my czytać dane. Służy do tego dyrektywa kompilatora {$1+}, powodująca włą­czenie kontroli każdej operacji wejścia/wyjścia, w tym operacji Reset(plik). Kontrola ta polega na sygnalizacji występującego błędu i przerwaniu działa­nia programu (tak jest standardowo). Zaś przy dyrektywie {$i-} błędy wej­ścia/wyjścia nie powodują przerwania działania programu, ale po wystąpieniu błędu te operacje są ignorowane aż do wywołania standardowej funkcji lOResult, która kasuje stan błędu. Jeśli w trakcie wykonywania programu nie wystąpił błąd operacji wejścia/wyjścia, to lOResult=0, a w przeciwnym razie iOResultoo.

Poniżej opisaliśmy moduł uWeWy, który można stosować w programach, ko­rzystających z osobnych plików z danymi i wynikami. Uwzględniliśmy w nim również obsługę błędów wejścia/wyjścia.

unit uWeWy; {plik uWeWy}

interface

procedurę otworzWe(var we:Text);

procedurę otworzWy(var wy:Text);

implementation var nazwa:string; OK:boolean;

{nazwa pliku}

Jak to zrobić

Sprawdzanie popraw­ności wykonania operacji wejścia i wyjścia w jeżyku Pascal.

Dyraktywa kompilatora {$1+} lub {$1-} jest dyrektywą lokalną, tzn. można ją wstawić w dowolne miejsce

procedurę otworzWe(var we:Text); begin repeat

Write('Podaj nazwę pliku z danymi (puste-koniec) Readln(nazwa); if nazwa='' then Halt; Assign(we,nazwa);

{$1-} Reset(we); {$1+} OK:=IOResult<>0; if OK then Writeln('Nie można odnaleźć pliku. until not OK end; {otwórzWe}

procedurę otworzWy(var wy:Text); begin

Write('Podaj nazwę pliku z wynikami: ');

Readln(nazwa); Assignfwy,nazwa); Rewrite(wy) end; {otwórzWy} end.

Ćwiczenie 1.49. Wykonaj jeszcze raz ćwicz. 1.48, ale tym razem posłuż się modułem uWeWy.

Ćwiczenie 1.50. Zmień procedurę otwór zWy, z powyższego modułu uWeWy, tak aby przed otwarciem istniejącego pliku do zapisu następowała informacja Plik o podanej nazwie istnieje, i pytanie Czy go skasować?.