Глобальные переменные в Delphi - PullRequest
1 голос
/ 12 января 2009

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

Ответы [ 2 ]

13 голосов
/ 12 января 2009

Нет, единица не эквивалентна форме.

Единица - это модуль, который содержит часть вашей программы. Каждая форма является отдельной единицей, но единица не должна содержать форму.

Каждый блок имеет раздел интерфейса и раздел реализации. Объявления в разделе интерфейса видны всем устройствам, которые используют устройство:

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.
0 голосов
/ 12 января 2009

Если вы хотите, чтобы глобальная переменная объявляла ее в разделе интерфейса вашего устройства.

PS Приложение консоли может использовать единицы.

PPS Потратьте некоторое время и прочитайте документацию по Delphi, она довольно хорошо объясняет язык Delphi.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...