Относительно того, влияет ли директива на весь проект, на весь блок, одну функцию и область с функцией, которая варьируется от директивы к директиве. Вы должны прочитать документацию для каждой директивы, чтобы знать, какова ее область действия.
Вы спрашиваете, нужно ли их размещать прямо в начале блока. Вы должны принять во внимание сферу действия директивы. В другой части документации говорится о директивах switch:
Директивы Switch являются глобальными или локальными:
- Глобальные директивы влияют на всю компиляцию и должны появляться перед декларируемой частью программы или компилируемым модулем.
- Локальные директивы влияют только на часть компиляции, которая простирается от директивы до следующего появления той же директивы. Они могут появиться где угодно.
Однако рассмотрим директиву DENYPACKAGEUNIT
(выделено мной):
Директива {$DENYPACKAGEUNIT ON}
запрещает помещать в пакет устройство Delphi , в котором он выглядит .
Если эта директива имеет охват всей единицы, то она просто должна присутствовать в единице для вступления в силу.
Так что может иметь значение, где находится директива. Суть в том, что для каждой директивы вам необходимо знать ее область действия, и для этого вы должны обратиться к документации по этой директиве.
Обратите внимание, что вам нужно устанавливать директивы в коде, только если вы хотите изменить настройки, сделанные в настройках проекта. Вполне разумно устанавливать параметры в настройках проекта, а не устанавливать их в коде.
В коде, который вы представляете, произошло то, что автор набрал CTRL + O O , и в среду IDE были вставлены различные параметры, определенные в параметрах проекта, в этот момент. во времени.