Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.07.22;
Скачать: CL | DM;

Вниз

Create(nil)   Найти похожие ветки 

 
Aragorn   (2007-06-26 11:31) [0]

Где искать объекты созданные с nil владельцем?


 
Ega23 ©   (2007-06-26 11:35) [1]

А нигде. Надо указатель на них запоминать. Например, в TObjectList


 
Правильный Вася   (2007-06-26 11:38) [2]


> Где искать

в мусорке, правда, до прибития твоей программы из винды


 
Aragorn   (2007-06-26 11:40) [3]

Понятно. А в чем преимущества такой работы по сравнению с указанием владельца и FindObject, скорость?


 
StriderMan ©   (2007-06-26 11:41) [4]


> Aragorn   (26.06.07 11:31)  
> Где искать объекты созданные с nil владельцем?

строго говоря владелец может быть только у компонентов.


 
StriderMan ©   (2007-06-26 11:42) [5]


> А в чем преимущества такой работы по сравнению с указанием
> владельца и FindObject, скорость?

преимущество в том что сам рулишь временем жизни объекта.


 
homm ©   (2007-06-26 11:43) [6]

> строго говоря владелец может быть только у компонентов.

У недвижимости может.


> Где искать объекты созданные с nil владельцем?

А где искать объекты не с nil владельцем?


 
StriderMan ©   (2007-06-26 11:44) [7]


> homm ©   (26.06.07 11:43) [6]
> А где искать объекты не с nil владельцем?

у владельца, очевидно :)


 
Правильный Вася   (2007-06-26 11:48) [8]


> > А где искать объекты не с nil владельцем?

в офшоре


 
homm ©   (2007-06-26 11:49) [9]

> у владельца, очевидно :)

А в ладельца где искать?

Я все к тому, что вопрос какой-то странный, куда положил, там и иши.


 
StriderMan ©   (2007-06-26 11:56) [10]


> в офшоре

+1 ))


> homm ©   (26.06.07 11:49) [9]
> Я все к тому, что вопрос какой-то странный, куда положил, там и иши.

речь как я понял о создании компонентов в ран-тайм.


 
Anatoly Podgoretsky ©   (2007-06-26 12:05) [11]

Что за объекты?


 
Aragorn   (2007-06-26 12:07) [12]


> Я все к тому, что вопрос какой-то странный, куда положил,
>  там и иши.

Я вот сейчас и ищу там где положил - у владельца, поэтому и спрашиваю про владельца nil
Т.е. если мы не запомнили указатель на компонет созданный Create(nil), то мы его не сможем найти чтобы уничтожить?


> преимущество в том что сам рулишь временем жизни объекта.

Я могу рулить временем жизни компонентов и с Owner.FindComponent("name").Free
Я так полагаю, что у меня еще мало компонентов создаваемых и я могу в них разобраться.
Так как примерно должна выглядеть структура хранения данных создаваемых компонентвов и работа(поиск) с ними?


 
Aragorn   (2007-06-26 12:09) [13]


> речь как я понял о создании компонентов в ран-тайм.

да, конечно ран тайм


> Что за объекты?

Как меня правильно поправили - компоненты. Любые компоненты - кнопки, поля ввода, датасеты...


 
homm ©   (2007-06-26 12:10) [14]

> Т.е. если мы не запомнили указатель на компонет созданный
> Create(nil), то мы его не сможем найти чтобы уничтожить?

Есть принципиальное отличие от того, что мы получим, потеряв указатель на объект, созданый не в рантайм? Вроде нет. Единого реестра, хранившео бы все классы, или объеты — нет.


 
StriderMan ©   (2007-06-26 12:12) [15]


> Так как примерно должна выглядеть структура хранения данных
> создаваемых компонентвов и работа(поиск) с ними?


 cmp := TMyComponent.Create(nil);
 try
   тут делаешь с компонентом все что тебе нужно
 finally
   cmp.Free;
 end;



> Owner.FindComponent("name").Free

а где ты имена хранишь? в голове? :))


 
Однокамушкин   (2007-06-26 12:13) [16]

все визульные компоненты кроме owner-а должны ещё иметь parent-а, а то их не будет видно на экране... в этом случае их можно найти через свойство Controls parent-а...


 
StriderMan ©   (2007-06-26 12:16) [17]


> все визульные компоненты кроме owner-а должны ещё иметь
> parent-а

Owner"а могут и не иметь.


 
Правильный Вася   (2007-06-26 12:17) [18]


> все визульные компоненты

список компонентов визуальными далеко не ограничивается, скорее, наоборот - невизуальных поболе будет


 
Aragorn ©   (2007-06-26 12:23) [19]


>  cmp := TMyComponent.Create(nil);
>  try
>    тут делаешь с компонентом все что тебе нужно
>  finally
>    cmp.Free;
>  end;


Ну и как это подходит под то, что мне например, через пол дня работы программы после создания компонента надо этот компонент найти и поработать с ним?
Да, я знаю его имя или хотя бы класс. Я его ищу у владельца.


 
iXT ©   (2007-06-26 12:30) [20]

А чего вообще от него требуется?


 
ЮЮ ©   (2007-06-26 12:33) [21]

> Да, я знаю его имя или хотя бы класс. Я его ищу у владельца.

А что мешаеть запомнить прямую ссылку, т.е. сделать как Delphi, только описание поместить не в published секции?

TfrmMain = class(TForm)
private
 FRunTimeCreatedButton: TButton;


 
Aragorn ©   (2007-06-26 12:37) [22]


> А что мешаеть запомнить прямую ссылку, т.е. сделать как
> Delphi, только описание поместить не в published секции?
>

я не знаю сколько будет этих компонентов. Столько сколько захочет пользователь.


 
homm ©   (2007-06-26 12:38) [23]

> я не знаю сколько будет этих компонентов. Столько сколько
> захочет пользователь.

TList


 
StriderMan ©   (2007-06-26 12:40) [24]


> Ну и как это подходит под то, что мне например, через пол
> дня работы программы после создания компонента надо этот
> компонент найти и поработать с ним?

а ты их в некоем общем пуле собираешься хранить?

создавай их в том классе, в котором они используются, и как написали выше, храни там прямую ссылку

> ЮЮ ©   (26.06.07 12:33) [21]


Или ты заранее не знаешь ни классов ни количества компонентов?
Если так, то имеет смысль завести некий компонент-хранитель для таких вещей. Хранить на него ссылку и указывать его Owner"ом.  Для этого вобщем-то и придумали TDataModule.

но искать компоненты по ИМЕНАМ не есть правильно. Это скорее вспомогательное средство.


 
StriderMan ©   (2007-06-26 12:41) [25]


> homm ©   (26.06.07 12:38) [23]
> TList

еще лучше наверное TObjectList с флажком OwnsObjects = true.


 
Ega23 ©   (2007-06-26 12:49) [26]


> еще лучше наверное TObjectList с флажком OwnsObjects = true.


см. [1]   :)


 
Aragorn ©   (2007-06-26 12:56) [27]


> см. [1]   :)


см. [3]   :)

Допустим создаются у меня на DataModule связки DataSet-DataSouce в неизвестном количестве. Я с ними работаю как TDataSet(dm.FindComponent).BlahBlah
Имеет смысл создавать Create(nil) и всё хранить в TObjectList. Так удобнее, правильнее, быстрее?


 
Плохиш ©   (2007-06-26 12:57) [28]


> Я могу рулить временем жизни компонентов и с Owner.FindComponent("name").Free

Я тащусь, уважаемая редакция :-)) Скажите, а Owner вы у кого берёте?


 
Anatoly Podgoretsky ©   (2007-06-26 13:00) [29]

> Aragorn  (26.06.2007 12:09:13)  [13]

Это общие слова, говори конкретно.


 
Anatoly Podgoretsky ©   (2007-06-26 13:01) [30]

> Aragorn  (26.06.2007 12:23:19)  [19]

Какой класс, говори конкретно.E5тно.


 
Loginov Dmitry ©   (2007-06-26 13:01) [31]

Естественно, если создаешь динамически, то не стоит назначать владельцем TDataModule. Загоняй в список, имен при этом компонентам можно не назначать.
Это, само собой, будет работать быстрее, чем поиск через FindComponent().


 
horse ©   (2007-06-26 13:04) [32]


> Я тащусь, уважаемая редакция :-)) Скажите, а Owner вы у
> кого берёте?

:)  Ну я же знаю где я его создавал.

> Какой класс, говори конкретно.E5тно.

[27]


 
Плохиш ©   (2007-06-26 13:06) [33]


> Aragorn ©   (26.06.07 12:56) [27]
> Допустим создаются у меня на DataModule связки DataSet-DataSouce
> в неизвестном количестве. Я с ними работаю как TDataSet(dm.
> FindComponent).BlahBlah

Прикольная технология, применим к очереди :-)
Перед кабинетом врача висит ящичек с кнопочкой, при нажатии на которую, из ящичка вылазит бумажка с номером очереди, далее человек содится и ждёт, когда вызовут его номер очереди. Вы предлагаете, что бы человек, после получения очереди, подошёл к секретурке/вахтёрше/уборщице, зарегстрировался у неё со всеми паспортными данными и когда его очередь подойдёт, секретурка/... должна пройтись по всем людям в наличии и потребовать у них паспортные данные, после сверки с записанными у неё, решить тот ли это человек или нет.

Психушкой попахивает... попытка внедрения достижений социализма в программирование...


 
Игорь Шевченко ©   (2007-06-26 13:14) [34]

Плохиш ©   (26.06.07 13:06) [33]


> попытка внедрения достижений социализма в программирование.
> ..


Ты не радуйся, скоро и до Германии доберемся ;)

Aragorn ©   (26.06.07 12:56) [27]


> Допустим создаются у меня на DataModule связки DataSet-DataSouce
> в неизвестном количестве. Я с ними работаю как TDataSet(dm.
> FindComponent).BlahBlah
> Имеет смысл создавать Create(nil) и всё хранить в TObjectList.


Нет, не имеет. Зачем создавать руками то, что можно создать в design-time и преспокойно использовать ?


>  Так удобнее, правильнее, быстрее?


Неудобнее, неправильнее и медленнее.


 
Aragorn ©   (2007-06-26 13:19) [35]


> Плохиш ©   (26.06.07 13:06) [33]

Наглядно :-) Лучше хранить самому.


> Игорь Шевченко ©   (26.06.07 13:14) [34]

То ли я вас не понял, то ли вы меня...
Как я могу в дизайн тайм это создавать, если я не знаю количества компонентов, это определяет пользователь.
Речь именно о ран тайм.


 
Плохиш ©   (2007-06-26 13:19) [36]


> Игорь Шевченко ©   (26.06.07 13:14) [34]
> Плохиш ©   (26.06.07 13:06) [33]
>
>
> > попытка внедрения достижений социализма в программирование.

> Ты не радуйся, скоро и до Германии доберемся

Это и расстраивает :-(



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

Текущий архив: 2007.07.22;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.027 c
2-1182855012
dimon_s
2007-06-26 14:50
2007.07.22
Cells для DBGridUSB


2-1182861887
Ламер 2.Х
2007-06-26 16:44
2007.07.22
Окна


2-1183037115
Nikfel
2007-06-28 17:25
2007.07.22
Как вывести текст по центру на canvas.


11-1166019733
Fregl
2006-12-13 17:22
2007.07.22
Проблема работы с несколькими формами


2-1182982367
Malik
2007-06-28 02:12
2007.07.22
TreeView