У меня есть консольное приложение, написанное на Delphi. Я видел, что могу иметь глобальные переменные, назначая их областям единиц измерения, но в консольном приложении я не использую единицы (насколько я понял, это только формы).





Нет, единица не эквивалентна форме.
Единица - это модуль, который содержит часть вашей программы. Каждая форма является отдельным блоком, но блок не обязательно должен содержать форму.
Каждый модуль имеет раздел интерфейса и раздел реализации. Объявления в разделе интерфейса видны всем модулям, которые используют этот модуль:
unit A;
interface
type
TMyClass = class
end;
implementation
end.
unit B;
interface
uses
A; // I can now see and use TMyClass.
Вы можете объявить глобальные переменные, объявив их в модуле:
unit A;
interface
var
GVar1 : Integer;
implementation
var
GVar2 : Integer;
end.
GVar1 виден и может быть изменен всеми модулями, использующими модуль A. GVar2 виден только кодом модуля A, поскольку он определен в разделе реализации.
Я настоятельно не рекомендую использовать глобальные переменные в разделе интерфейса, потому что вы не можете их контролировать (потому что любой может их изменить). Если вам действительно нужен глобал, вам лучше определить его в разделе реализаций и предоставить функции доступа.
Кстати, вы можете рассматривать юнит как своего рода класс (с единственным экземпляром). У него даже есть способ создавать и разрушать:
unit A;
interface
type
TMyClass = class
end;
implementation
initialization
// Initialize the unit
finalization
// Free resources etc. You can olny have a finalization if you have an initialization.
end.
Что касается вашего наблюдения о «модулях как классах», я думаю, что именно так модули Delphi реализованы в .Net.
Я думаю, что более логично думать о модуле как о пространстве имен, по крайней мере, в версии Delphi, отличной от dotnet.
Если вы хотите, чтобы глобальная переменная была объявлена в разделе интерфейса вашего модуля.
PS Консольное приложение может использовать модули.
PPS Найдите время и прочтите документацию по Delphi, она хорошо объясняет язык Delphi.
ОК. Ваше понимание неверно. Но в чем твой вопрос?