Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.20;
Скачать: CL | DM;

Вниз

Раздел Initialization   Найти похожие ветки 

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

Подскажите, пожалуйста!
Почему приведенный ниже фрагмент работает,
а если заменить    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;
---------------------------


 
Zacho ©   (2005-10-28 08:13) [1]

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


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

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


 
Anatoly Podgoretsky ©   (2005-10-28 09:09) [3]

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


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

Alex7   (28.10.05 8:59) [2]

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

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


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

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


 
amoeba ©   (2005-10-28 12:49) [6]


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

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


 
Digitman ©   (2005-10-28 12:51) [7]


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


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



Страницы: 1 вся ветка

Текущий архив: 2005.11.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.034 c
6-1122990135
Dyakon_Frost
2005-08-02 17:42
2005.11.20
Обработка интернет страницы!


14-1130228493
Ega23
2005-10-25 12:21
2005.11.20
С днем рождения! 7 октября


14-1130428910
Gydvin
2005-10-27 20:01
2005.11.20
Помогите выбрать принтер


14-1130503656
Андрей Жук
2005-10-28 16:47
2005.11.20
Бинарная совместимость в виндах


2-1130424110
zaN0za
2005-10-27 18:41
2005.11.20
Вопрос по потокам