Zabezpieczenie przed brakiem pliku

0

Witam.

Mam pewien problem z użyciem funkcji ioresult. Chcę zabezpieczyć program przed błędem wynikającym z brakiem na dysku rządanego pliku do odczytu. W jednym z poradników na forum przeczytałem, że** ioresult** używa się po** reset**. Lazarus jednak wyrzuca mi błąd z funkcją reset. Mógłby ktoś zerknąć czy moja procedura jest poprawna?

procedure wczytaj_ksiazki(var glowa:ksiazki);             
    var nowy:ksiazki;
     begin
      assign(plik,'dane2_test.rek');
      reset(plik);
      if ioresult=0 then begin
      while not eof (plik) do
        begin
          new(nowy);
          read(plik,nowy^);
          nowy^.nastepna_ksiazka:=glowa;
          glowa:=nowy;
        end;
      close(plik);
      end else
          writeln('brak pliku');
     end;                           
2

Wyrzuca błąd, dlatego że nie wyłączyłeś automatycznej obsługi błędów wejścia/wyjścia; Wczoraj albo przedwczoraj komuś na forum tłumaczyłem, że aby wyłączyć tę obsługę należy skorzystać z dyrektywy {$I-}, którą trzeba umieścić przez wywołaniem procedury Reset czy Rewrite; Aby ponownie włączyć automatyczną obsługę tych błędów, należy umieścić dyrektywę {$I+} już po zamknięciu wcześniej otwartego pliku;

To wszystko - wprowadź zmiany i sprawdź, powinno działać bez problemu; Zobacz też na opis funkcji IOResult tutaj w kompendium; Sam plik natomiast zamykaj procedurą CloseFile tylko w przypadku, gdy IOResult zwróci 0, bo dostaniesz kolejny błąd.

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