Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];

Вниз

Динамическое создание компонент   Найти похожие ветки 

 
Garfunkel   (2004-11-01 02:15) [0]

Если я создаю динамически компоненту (допустим кнопку) вот так:

var
 MyButton:TButton;
begin
 MyButton:=TButton.Create(Self);
 MyButton.Left:=100;
 MyButton.Top:=100;
 MyButton.Parent:=Form1;
end;

освободятся ли ресурсы памяти выделяемые для этой кнопки при выходе из программы или надо как-то их освобождать специально. И еще вопрос что значит Self? А Owner? Что лучше, какая разница? И так и так работает.


 
©   (2004-11-01 07:23) [1]

>освободятся ли ресурсы памяти выделяемые для этой кнопки при выходе из программы или надо как-то их освобождать специально.

Да освободятся. Не надо специально уничтожать. Более того будет
ошибка если это сделать. А по второй части лучше почитать книжку.


 
©   (2004-11-01 07:51) [2]

Да и лучше использовать такую конструкцию
begin
with TButton.Create(Self) Do begin
Left:=100;
Top:=100;
Parent:=Self;//Я думаю видно что такое Self
Caption:=Owner.Name;//и Owner
end;
end;


 
Reindeer Moss Eater ©   (2004-11-01 08:30) [3]

Более того будет
ошибка если это сделать.


С какого перепугу будет ошибка?


 
©   (2004-11-01 08:59) [4]

>С какого перепугу будет ошибка?
1.Лишнее действие.
2.Для некоторых случаев вызовит исключение.


 
Reindeer Moss Eater ©   (2004-11-01 09:06) [5]

Бред


 
©   (2004-11-01 09:21) [6]

>Бред
Что бред?


 
Reindeer Moss Eater ©   (2004-11-01 09:22) [7]

Более того будет
ошибка если это сделать.


Вот это и есть бред.


 
©   (2004-11-01 09:46) [8]

OK !
Во всех случаях
необходимо в деструкторе компанента(класса)
предусмватривать inherited
...............
destructor Destroy; override;
.................

destructor TMyComp.Destroy;
begin
inherited;//вот это обязательно и если нет что произойдет в реализации(в используемой программе) при уничтожении компанента
r1.Free;//что то
r2:=nil;//уничтожаем
end;

или же можно так

destructor TMyComp.Destroy;
begin
r1.Free;
r2:=nil;
end;


 
Reindeer Moss Eater ©   (2004-11-01 09:57) [9]

Лучше лоб потрогай.


 
KSergey ©   (2004-11-01 10:17) [10]

> r1.Free;//что то
> r2:=nil;//уничтожаем

Или теряем ссылку во второй строке???

> [8] R ©   (01.11.04 09:46)
> OK !
> Во всех случаях
> необходимо в деструкторе компанента(класса)

А это тут вообще при чем??? Как это к вопросу относится??

> [4] R ©   (01.11.04 08:59)
> >С какого перепугу будет ошибка?
> 1.Лишнее действие.
> 2.Для некоторых случаев вызовит исключение.

Лишнее действие - не есть ошибка периода выполнения.
По второму пункту - можно поподробнее? В каких случаях?

Автору
Читать тут:
http://www.delphikingdom.com/helloworld/runtime_comp.htm


 
©   (2004-11-01 11:19) [11]

>Reindeer Moss Eater ©  
>Лучше лоб потрогай.
Когда не хотят разобраться кидают такие и подобные фразы.
Я могу быть не прав но это не означает что необходимо
играть словами(бред и т.п.) без подтверждения их конкретными
примерами или объяснениями.

>KSergey ©  
>Или теряем ссылку во второй строке???
Вы меня не поняли.
r1 и r2- разные объекты.
r2-например дин. массив используемый
в компаненте, в деструкторе его уничтожаем.
Привел я их для примера. Собственно зря привел.
Разобраться же я хотел - inherited необходим во всех случаях
в деструкторе или же нет
, после этого я отвечу на второй комментарий, а именно
>А это тут вообще при чем??? Как это к вопросу относится??

и

>По второму пункту - можно поподробнее? В каких случаях?


 
Reindeer Moss Eater ©   (2004-11-01 11:44) [12]

Ты все же лоб потрогай.
И пойми разницу между компонентами (наследниками TComponent) и просто экземплярами классов - членами других классов.

Автор вопроса ведет речь про первые.


 
KSergey ©   (2004-11-01 11:57) [13]

> [11] R ©   (01.11.04 11:19)
> >KSergey ©  
> >Или теряем ссылку во второй строке???
> Вы меня не поняли.
> r2-например дин. массив используемый

Телепаты, знаете ли, в отпуске...

> Разобраться же я хотел - inherited необходим во всех случаях
> в деструкторе или же нет, после этого я отвечу на второй
> комментарий

А если разобраться - так может знаки вопросиков поставить хотя бы? ;)
По поводу нужности.
Ну что будет если не поставить - догадаетесь сами.
По поводу практического применения, мое мнение: можно, конечно, разобраться в каком конкретном случае оно не обязательно (например, реализация в предке пуста), однако по-моему это слишком геморойно. Проще вызвать всегда - и дело с концом ;) (если оно в предке вообще есть, конечно)



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.033 c
14-1098727730
Auron
2004-10-25 22:08
2004.11.14
написание Firewall a


14-1098896574
Настенька!!!
2004-10-27 21:02
2004.11.14
Корешик "Вика"


14-1098703907
Dimedrol
2004-10-25 15:31
2004.11.14
Windows XP Professional 64-bit Edition


14-1098702718
}|{yk
2004-10-25 15:11
2004.11.14
Прикупил Creative SB Live! 5.1


1-1099084127
Ded Moroz
2004-10-30 01:08
2004.11.14
Plugins





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