Форум: "Начинающим";
Текущий архив: 2007.07.22;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.065 c