Попробуйте эту схему. У меня это работает.
procedure part_of_starting_up(n:string....) var f: typed file; begin try try assign/reset(f,n); while not eof(f) do read_and_process_each_record(f); finally {$i-} { Нет необходимости жаловаться, если закрытие прошло неудачно. } close(f); {$i+} end; except on E:EInOutError do case e.ErrorCode of nn1: messagedlg('невозможно найти/открыть файл'); nn2: messagedlt('ошибка чтения файла'); end; end (и т.д.) |
Имейте в виду, что для типа функции, которую вы используете, вы получите одно и то же исключение с именем EInOutError. Чтобы узнать показываемое сообщение об ошибке, необходимо использовать errorcode.
К сожалению (или к счастью), вы не можете вкладыть except & finally в блоки try. [001668]