![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Раздел 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 ещё не создан.