private: // User declarations
static TStringList *List;
static int test;
TForm1 *Form1;
TStringList* TForm1::List = new TStringList;
int TForm1::test = 0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
List->Add(IntToStr(test));
++test;
Memo1->Lines->AddStrings(List);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TForm1 *Fmn = new TForm1(this);
Fmn->Show();
}
Запрет на создание стековых объектов
Уважаемые форумцы! Абсолютно неприкладной вопрос - почему в билдере/дельфи нельзя создавать VCL-объекты на стеке, т.е. статически. Кто знает, из каких соображений так было сделано? и как этот запрет реализуется - на уровне компилятора или еще каким-то образом?
во вторых - если речь идет о стаических объектах - для VCL-объектов есть свойство Parent - т.е. родитель для данного компонента. Как вы собираетесь реализовать в случае статического создания объекта? А если компонент не требует этого - то он нормально создается. Проверьте этот код:
Код:
Код:
void __fastcall TForm1::Form1OnClick(TObject *Sender)
...
...
и все вам станет понятно. И так же почему запрещено множественное наследование для билдеровских классов, вы то же сможете самостоятельно ответить.