Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.096 c
1-1130366375
Mister
2005-10-27 02:39
2005.11.20
реестр и Delphi


3-1128676294
Пономарев Андрей
2005-10-07 13:11
2005.11.20
Сохранение в DBF


2-1131098827
Максим
2005-11-04 13:07
2005.11.20
Поедание память


3-1128676210
Zhekson
2005-10-07 13:10
2005.11.20
Можно ли вставить картинку в DBGrid???


14-1130237928
Empleado
2005-10-25 14:58
2005.11.20
FAQ для JAVA?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский