Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.039 c
1-1179238508
XR
2007-05-15 18:15
2007.07.22
Вопрос по Delphi 2007


2-1181921347
wesel
2007-06-15 19:29
2007.07.22
Ограничить Программку на использование ресурсов компа


2-1182987110
Виктор007
2007-06-28 03:31
2007.07.22
Как сделать...


15-1182478313
Slider007
2007-06-22 06:11
2007.07.22
С днем рождения ! 22 июня 2007 пятница


2-1182845815
Dimon777
2007-06-26 12:16
2007.07.22
Как узнать имя пользователя, запустившего приложение?





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