Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.26;
Скачать: CL | DM;

Вниз

try..except   Найти похожие ветки 

 
Вячеслав Бессонов   (2006-02-06 11:22) [0]

Надо бы написать обработчик ошибок для:
opd.Execute;
mm.Lines.LoadFromFile(opd.FileName);
что надо написать в except?


 
msguns ©   (2006-02-06 11:25) [1]

?

Наверное, что-то типа
"Не удается найти сохраненный ранее текст"


 
umbra ©   (2006-02-06 11:30) [2]


> что надо написать в except?


а какие ошибки ожидаются?


 
Вячеслав Бессонов   (2006-02-06 11:32) [3]

ожидается, что пользователь укажет несуществуещее имя фала.


 
Gero ©   (2006-02-06 11:36) [4]

Вот это и напиши.


 
Ega23 ©   (2006-02-06 11:39) [5]


> ожидается, что пользователь укажет несуществуещее имя фала.


Ну на такое я бы сделал

if not FileExists(FileName) then
begin
  MessageBox(Handle, PChar("Файл "+FileName+" - не существует!"), PChar("Ошибка!"), MB_OK or MB_ICONERROR);
  Exit;
end;


А в except может много чего другого придти. Например, файл закрыт для доступа.


 
Вячеслав Бессонов   (2006-02-06 11:44) [6]

Попробуем


 
Gero ©   (2006-02-06 11:49) [7]

А вобще в TOpenDialog есть такая опция ofFileMustExist.


 
Вячеслав Бессонов   (2006-02-06 11:50) [8]

try

mm.Lines.LoadFromFile(opd.FileName);

except

if not FileExists(opd.FileName) then
 begin
   MessageBox(Handle,PChar("Ôàéë "+opd.FileName+" - íå ñóùåñòâóåò!"), PChar("Îøèáêà!"), MB_OK or MB_ICONERROR);
   Exit;
 end;

end;
такой код?


 
umbra ©   (2006-02-06 11:51) [9]

с помощью try ... except можно так

try
 if opd.Execute then
   mm.Lines.LoadFromFile(opd.FileName);
except
 on EFOpenError do ShowMessage("Нет такого файла!");
end;


но, по-моему, проще в opd.Options поставить True для opFileMustExist. Тогда о существовании файла будет заботиться диалог


 
Reindeer Moss Eater ©   (2006-02-06 11:52) [10]

on EFOpenError do ShowMessage("Нет такого файла!");

Можно подумать, что без этого обработчика пользователь не получит вразумительного сообщения.


 
Ega23 ©   (2006-02-06 11:55) [11]


> такой код?


Нет, конечно.


try

if not opd.Execute then Exit;

if not FileExists(opd.FileName) then
begin
  MessageBox(Handle,PChar("Ôàéë "+opd.FileName+" - íå ñóùåñòâóåò!"), PChar("Îøèáêà!"), MB_OK or MB_ICONERROR);
  Exit;
end;

mm.Lines.LoadFromFile(opd.FileName);

except on E:exception do
MessageBox(Handle,PChar("Программное исключение "+E.Message), PChar("Îøèáêà!"), MB_OK or MB_ICONERROR);

end;


 
Gero ©   (2006-02-06 11:57) [12]

> Ega23 ©   (06.02.06 11:55)


> if not FileExists(opd.FileName) then

Зачем это?


 
Вячеслав Бессонов   (2006-02-06 11:59) [13]

Прощу прощения за свою неопытность и глупость


 
Gero ©   (2006-02-06 12:03) [14]


opd.Options := opd.Options + [ofFileMustExist];
if opd.Execute then
 try
   mm.Lines.LoadFromFile(opd.FileName);
 except on E: Exception do
   Application.MessageBox(PChar("При попытке чтения файла произошла ошибка."#13#10#13#10 + E.Message), PChar("Невозожно прочитать файл"), MB_OK or MB_ICONERROR);
 end;


 
Ega23 ©   (2006-02-06 12:06) [15]


> Зачем это?


ну поставь ofFileMustExist в свойства. Какая разница-то?


 
Gero ©   (2006-02-06 12:08) [16]

> Какая разница-то?

Разница в быстроте, время — деньги ;)


 
Gero ©   (2006-02-06 12:09) [17]

> Ega23 ©   (06.02.06 12:06)

А еще разница в том, что если использовать ofFileMustExist, диалог не закроется при неверно введенном имени файла.


 
Ega23 ©   (2006-02-06 12:12) [18]


> А еще разница в том, что если использовать ofFileMustExist,
>  диалог не закроется при неверно введенном имени файла.


А это, кстати, не всегда удобно бывает.
В общем спор беспредметный.


 
Gydvin ©   (2006-02-06 12:29) [19]

не пойму а почему бы [5] невоспользоваться!??!?!?? Тем более этот ответ я автору дал в ветке "Сохранение"  и на кой при загрузке в мемо обработчик исключений 8-0


 
Gero ©   (2006-02-06 12:32) [20]

> на кой при загрузке в мемо обработчик исключений 8-0

Не поверишь: помому что при загрузке в Memo может произойти исключение.


 
Reindeer Moss Eater ©   (2006-02-06 12:40) [21]

> на кой при загрузке в мемо обработчик исключений 8-0

Не поверишь: помому что при загрузке в Memo может произойти исключение.


Я бы вопрос поставил так:
На кой при загрузке в мемо такой обработчик исключений?


 
Gero ©   (2006-02-06 12:53) [22]

> На кой при загрузке в мемо такой обработчик исключений?

Например, чтобы по-русски объяснить пользователю, что произошло.


 
Gydvin ©   (2006-02-06 12:57) [23]

Не поверишь: помому что при загрузке в Memo может произойти исключение.

Ну если так рассуждать, то вобще надо каждую мелочь защищать, и вместо кода будет галимый обработчик исключений :(. Помоему в этом случае достаточно просто проверять наличий файла во время открытия.


 
Gero ©   (2006-02-06 12:58) [24]

> Ну если так рассуждать, то вобще надо каждую мелочь защищать

Так оно и есть.


 
Ega23 ©   (2006-02-06 13:07) [25]


> то вобще надо каждую мелочь защищать


В хорошем коммерческом продукте - безусловно.
Это в поделках студенческих такие вещи можно пропустить. Или в каких-то вспомогательных программках "для себя".


 
Gydvin ©   (2006-02-06 13:46) [26]

В хорошем коммерческом продукте - безусловно.

Ну может быть, во всяком случае судя по сабжу автору до хорошего коммерческого проекта еще далеко, и безусловно нестоит грузить этими штуками и так каша в голове.


 
Reindeer Moss Eater ©   (2006-02-06 14:02) [27]

Например, чтобы по-русски объяснить пользователю, что произошло.

Дефолтный обработчик и делает это по-русски.



Страницы: 1 вся ветка

Текущий архив: 2006.02.26;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.045 c
2-1139472056
kot137
2006-02-09 11:00
2006.02.26
Не работает сортировка в SQL запросе.


9-1125503769
Nonstop
2005-08-31 19:56
2006.02.26
Gjvjubnt vyt f z dfv pfgkfxe


2-1139398795
Lera
2006-02-08 14:39
2006.02.26
Открытые формы


15-1138855004
TUser
2006-02-02 07:36
2006.02.26
В круге первом


6-1132258866
serko
2005-11-17 23:21
2006.02.26
Доступ на папку только на чтение!