Показать сообщение отдельно
  #2  
Старый 26.01.2015, 17:23
Аватар для madMonia
madMonia madMonia вне форума
Новичок
 
Регистрация: 25.02.2014
Сообщения: 50
Версия Delphi: Delphi XE3
Репутация: 2545
По умолчанию

Вообще, зависит от того, каким целям должен служить этот код.

В общем случае алгоритм выглядит как-то так
1) Проверить все ли данные готовы
2) Выполнить операцию
3) Проверить не возникла ли ошибка(проверить код возрвата функции, либо проверить исключение в try..except, либо проверить значение LastError)
4) Как-то обработать ошибку, если она произошла
5) Перейти к следующему этапу

То есть, перед переименованием и копированием файла следует проверить, есть ли файл. Даже если предыдущая операция прошла без ошибок, файл, чисто теоритически, мог кто-то удалить. Перед созданием файла можно проверить, а есть ли каталог, в котором создается файл.

Обрабатывать же ошибку можно различным образом:
1) Часть ошибок, с которыми вы знаете как бороться, можно победить программно(например, если файл с таким названием уже существует - удалить(переименовать) его и создать на его месте свой)
2) Те ошибки, с которыми вы не знаете как боротся можно выдать пользователю на экран в виде сообщения
3) Если пользователь недостаточно квалифицирован, чтобы разобратся с ошибкой, можно выдать пользователю общее сообщение, что-то вроде: "Произошла ошибка, операция не выполнена, свяжитесь с разработчиком" И сформировать отдельное сообщение\файл, содержащее подробное описание ошибки, которое пользователь направит вам, и которое вы сможете проанализировать.
4) Если операция выполняется в фоновом режиме, можно сохранять возникающие ошибки в лог.
5) Наконец, чисто теоритически, можно попробовать решить дело грубой силой - если не создался файл попытатся создать его еще раз и так до бесконечности(некоторое количество раз). Однако, логика подсказывает, что если файл не создался в первый раз, то он и в 10й не создасться, так что я бы не рекомендовал такой путь.
__________________
Невозможно заточить карандаш тупым топором. Столь же тщетно пытаться сделать это десятком тупых топоров
Ответить с цитированием