[Delphi] Niegrzeczny wyjątek...

0

Witam!
Piszę projekt zaliczeniowy i mam pewien problem!
W procedurze, którą niżej przytaczam, wczytuje plik do Memo1. Całość ująłem w wyjątek try ... except on EInOutError do (...) jednak w momencie kiedy plik nie istnieje pokazuje mi się moje ogłoszenie, ale zaraz po nim komunikat "I/O Error 103". Jak się pozbyć tego komunikatu?
Oto ta procedura:

procedure TForm1.Lekcja41Click(Sender: TObject);
begin
try
  AssignFile(plik, 'lekcja4.gaf');
  Reset(plik);
  linia:='';
    while not Eof(plik) do
     Begin
       Read(plik, znak2);
       linia:=linia+znak2;
     end;
   Form1.Memo1.Text:=linia;
   if first = False then
     licznik:=-1
   else
     licznik:=0;
   Form1.Memo2.Text:='';
except
  on EInOutError do Application.MessageBox('Plik z lekcją nie istnieje lub został przemieszczony!','Uwaga!!!       o_O');
 end;
   CloseFile(plik);
   first:=False;
end;
0

Jeżeli uruchamiasz program z IDE to być może jest to błąd pokazywany przez Delphi. Jeżeli tak to możesz albo odznaczyć opcję "Tools|Debugger Options|Language Exceptions|Stop on Delphi Exceptions", albo uruchomić program z pliku. Jeżeli nie to nie wiem. :)

0

Ponieważ closefile jest za except i probuje zamknąc plik któy nie został otwarty sprubuj w try- finnaly- end;

0

błędy I/O żeby nie wyświetlało możesz ująć kod w dyrektywy I-

{$I-}
kod
{$I+}

0

Heh, dzięki, głupi błąd ;P ... Przesunąłem CloseFile(plik) przed except i działa. Pozdro

0

Sugerowałbym też if ort!(... ) then else;
Prostsze bez wywoływanai błędów.

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