[Pascal]-Kody błędów wejścia-wyjścia

0

Oto całe zadanie:

program read;
uses crt;

var
plik_we : text;
plik_wy : text;
nazwapliku,bufor : string;

begin
clrscr;
readln(nazwapliku);
{$I-}
assign (plik_we,nazwapliku);
reset (plik_we);
if ioresult=** then writeln (********) else
while not eof(plik_we) do
begin
read (plik_we, bufor);

if ioresult=** then writeln (***) else

assign(plik_wy,'output.txt');
rewrite(plik_wy);

writeln(bufor);
writeln(plik_wy, bufor);

if ioresult=** then writeln (********) else

repeat until keypressed
end;

close(plik_we);
close(plik_wy);

end.

---W gwiazdki wpisać numer (kodu wyjscia/wejscia) i co on robi (w nawiasie
co robi) np: if ioresult=0 then writeln ('Operacja zakonczona sukcesem')
else---

--owszem znalazłem spis poszczególnych błędów ale nie wiem jakie błędy wystąpią w tym zadaniu---

---jeżeli ktoś może mi pomóc z tym zadaniem byłbym bardzo wdzięczny---

0

tego nie da się tak zrobić. pierwszy ioresult może się odnosić do 2 (File not found), ale również do kilku niestandardowych błędów (4, 5, 158, 161, 152, 154 itp). drugi - 5, 100, 158, 161, cokolwiek innego. trzeci - 101, 102, 103, 150, 158, 160 czy cokolwiek innego.

nie tak się pisze obsługę błędów I/O. sprawdza się, czy jest <> 0, a nie czy jest równa konkretnym wartościom. sama logika programu zawiera też błędy - brakuje begin-end pomiędzy drugim a trzecim sprawdzaniem (przecież nie ma sensu zapisywać bufora do pliku, jeśli nie udało się go odczytać); tak jak masz teraz - jeśli nie uda się odczytać pliku, to plik do zapisu nie jest przypisany do konkretnej nazwy, czyli będziesz mieć błąd przy rewrite. btw efekt rewrite też nie jest sprawdzany, co oznacza, że trzeci ioresult może zawierać błąd także z tej instrukcji, nie tylko z nieudanego rewrite. kolejny błąd - na koniec zamykasz pliki, ale co, jeśli nie zostały otwarte ze względu na wcześniejsze błedy, chociażby nieistniejący plik do odczytu?
błąd na błędzie!

1 użytkowników online, w tym zalogowanych: 0, gości: 1