Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Раздел Initialization


Alex7 ©   (2005-10-28 08:00:00) 

Подскажите, пожалуйста!
Почему приведенный ниже фрагмент работает,
а если заменить    procedure TForm1.FormCreate
на    Initialization Form1.A; , то компиляция проходит,
а при выполнении выдается ошибка "Access Violation"?
Спасибо.
------------------------------------
type
 TForm1 = class(TForm)
   Label1: TLabel;
   procedure FormCreate(Sender: TObject);
   procedure A;

{$R *.dfm}
procedure TForm1.A;
begin
Label1.Caption := 'aaaaaaaaa';
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
A;
end;
---------------------------


Digitman   (2005-10-28 12:51:00) [1]


> хочу понять, зачем "Initialization", когда
> проще "TForm1.FormCreate".


код в секции Initialization  выполняется автоматически при старте приложения еще ДО выполнения самого первого оператора в dpr-файле , назначение секции - произвести общую (для данного юнита в целом) инициализацию тех или иных данных юнита, которые могут и/или будут в последствии использованы различными алгоритмами приложения


amoeba   (2005-10-28 12:49:00) [2]


> Alex7   (28.10.05 12:39) [5]
> Это так, для примера.  Просто я хочу понять, зачем "Initialization",
>  когда
> проще "TForm1.FormCreate".

Это называется: "В огороде бузина, а в Киеве дядька".


Alex7   (2005-10-28 12:39:00) [3]

Это так, для примера.  Просто я хочу понять, зачем "Initialization", когда
проще "TForm1.FormCreate".


Zacho   (2005-10-28 09:45:00) [4]

Alex7   (28.10.05 8:59) [2]

Причём здесь возможности какого-либо раздела ?
Всё очень просто - перед тем, как обратиться к методам/полям какого-либо объекта ты должен его создать. И совершенно не важно, в каком разделе.
Другое дело, что создавать формы в initialization ммм.. не принято.Обычно формы создаются или в файле проекта до Application.Run или по мере необходимости.

А что, собственно, у тебя делает метод TForm1.A ? Какой смысл выполнять его именно в initialization ?


Anatoly Podgoretsky   (2005-10-28 09:09:00) [5]

Получается, а что неограничено?


Alex7   (2005-10-28 08:59:00) [6]

Тогда выходит, что возможности использования этого раздела очень ограничены ?


Zacho   (2005-10-28 08:13:00) [7]

Потому что во время выполнения раздела initialization объект Form1 ещё не создан.


Наверх

Титульная страница Поиск, карта сайта Написать письмо