Несколько форм. Глобальные переменные. Как правильно?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Несколько форм. Глобальные переменные. Как правильно?

Сообщение GAMER » 07.08.2008 12:31:00

В проекте планируется работа с несколькими формами. При этом с главной запускаются (создаются) остальные, которые тоже могут создавать дочерные.
1. Как правильно и оптимально это реализовать?
2. Для работы нужны глобальные переменные. (Например идентификатор сессии MySQL. Один раз залогинился и на все формы одна сессия).
3. Для работы нужны процедури и функции общие для всех, где их лучше разместить? В глобальной форме или в каком то отдельном юните?
4. Как правильно работать с глобальными переменными и глобальными процедурами/функциями?
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Re: Несколько форм. Глобальные переменные. Как правильн

Сообщение Михаил Крамер » 07.08.2008 14:28:11

GAMER, ничего сложного.
Код: Выделить всё
unit GlobalIdent;
Interface
var
    global_varaible1, ...., global_varaibleN: Integer;
procedure GlobalProcedure;
function GlobalFunction: Integer;
implementation

procedure GlobalProcedure;
begin
   writeln('Оператор их глобальной процедуры');
end;

function GlobalFunction: Integer;
begin
   result:= -1;
end;
end.


А потом, где надо - uses GlobalIdent;

В принципе, можно и в модуле главной формы (кстати, по умолчанию на каждую форму, которую вы рисуете в Lazarus или Delphi создаётся глобальная переменная), но так изящнее и лучше структуируется прога.

Насчёт MIDI-форм в Lazarus-е - не работал.

Да, по поводу праильно работать - использовать как можно меньше глобальных переменных. А вот с процедурами и функциями - пожалуйста, только лучше, если мы говорим об ООП, абстрагировать их в классы
Михаил Крамер
новенький
 
Сообщения: 73
Зарегистрирован: 08.02.2008 14:26:40


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13

Рейтинг@Mail.ru