Главная страница
    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.05 c
2-1130427607
Unknown
2005-10-27 19:40
2005.11.20
Активность программы и SystemTray


14-1130088480
Нокия- Коннектинг Пипл
2005-10-23 21:28
2005.11.20
Телефоны


14-1130518782
Ксардас
2005-10-28 20:59
2005.11.20
Какова роль общества в политике?


3-1128587582
Maverick
2005-10-06 12:33
2005.11.20
Выполнение скриптов в MSSQL


2-1130757080
kami
2005-10-31 14:11
2005.11.20
Службы: узнать "Вход от имени"





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский