Главная страница
    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.055 c
14-1130681845
lookin
2005-10-30 17:17
2005.11.20
Как понять такую ошибку?


14-1130579720
Mambo
2005-10-29 13:55
2005.11.20
View Source in MS IE


14-1130300029
SPeller
2005-10-26 08:13
2005.11.20
Подскажите браузер


2-1130827236
syte_ser78
2005-11-01 09:40
2005.11.20
глупый вопрос по TDBLoocupComboBox


2-1130428870
Максим
2005-10-27 20:01
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский