Как проверить открыт ли файл delphi

Обновлено: 07.07.2024

> Достаточно проверять значения возвращаемые функциями

Рассмотрим простую ситуацию: открытие COM-порта, установка его параметров, таймаутов и т. д. Последовательный вызов нескольких API-функций.

ИМХО, 3-й вариант более логичный и более читабельный. Если есть механизм SEH, почему бы его не использовать? Тем более, он прекрасно поддреживается в Delphi.

ЗЫ: "Извените" пишется через "и", а причатсные обороты в таком случае нужно отделять запятой: "Достаточно проверять значения, возвращаемые функциями".
Такое впечатление, что русский язык изучался по китайскому букварю.

>> "Извените" пишется через "и",
Согласен, но у многих это (через "е") уже в крови 8).

Про необходимость. Позволю не согласиться и попробую раскрыть тему :)

Вариант не ленивый. Он прежде всего логичный.

Если исключить программы, которые "истинные пацаны" пишут "чиста на АПИ", то получается, половина проекта, использующая VCL, написана со вcесторонним использованием SEH (как минимум, потому что используется VCL :) ), а другая половина? Использует конструкции типа 1 и 2?

Мне не лень написать кучу if"ов. Мне лень обладать механизмом обработки исключений и не пользоваться им - он специально для этого придуман. А еще лень иметь в одном проекте две принципиально разные схемы действий при возникновении исключительных ситуаций.

Про читабельность - согласен, это - субъективное.


> Мне не лень написать кучу if"ов. Мне лень обладать механизмом
> обработки исключений и не пользоваться им - он специально
> для этого придуман. А еще лень иметь в одном проекте две
> принципиально разные схемы действий при возникновении исключительных
> ситуаций.

Я целиком и полностью поддерживаю.

Лень, безусловно, дело благородное.
Она вынуждает писать код, подобный такому:

То есть, в последнем примере между вызовами EnterCriticalSection и LeaveCriticalSection исключений на первый взгляд и не должно произойти.

Где тоже вроде исключений не может произойти.

Однако, исключения могут произойти в обоих случаях, если self=nil и ресурсы системы будут захвачены и не освобождены, что весьма плохо.


> А смысл? Только для каких-то системных утилит

Читайте также: