Форум: "Начинающим";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];
ВнизРаздел 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.055 c