W programie można sprawdzać, czy istnieje plik fizyczny, z którego chcemy 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łania 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, korzystają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 poprawnoś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ć?.