![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как обратиться к объекту, если еасть его имя. [D7, WinXP]
tazik © (2005-01-25 21:01:00)Здравствуйте!
Пишу такую прогу. Есть уменя на форме объекты определенных типов. Хочу составить дерево этих объектов, подобно Object Explorer
пример кода:
procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
var Comp: TComponent;
begin
Comp := TComponent(FindComponent(node.Text));
if Assigned(Comp) then
begin
if Comp.ClassName = 'TTabSheet' then (*)
showMessage(comp.name);
...
Но когда выполяется (*) выскакивает Access violation. Что делать?
tazik (2005-01-25 21:21:00) [41]Дело в том, что если убрать проверку
,
if Assigned(Comp) then
то AV выскакивает именно в строке (*)
Gero (2005-01-25 21:17:00) [42]А ты уверен, что AV выскакивает именно на этой строчке?
begin...end (2005-01-25 21:17:00) [43]> tazik © (25.01.05 21:01)
> Comp := TComponent(FindComponent(node.Text) );
Кстати, а зачем здесь приведение типа к TComponent?
Можно ведь и попроще: Comp := FindComponent(node.Text).
tazik (2005-01-25 21:14:00) [44]to begin...end
Вот и я про тоже! Может есть в АПИ какая-то ф-я&
tazik (2005-01-25 21:13:00) [45]И как этого избежать?
begin...end (2005-01-25 21:12:00) [46]> [3] Gero © (25.01.05 21:11)
Хм, но ведь тогда не выполнилась бы ветка if Assigned(Comp) then ...
Gero (2005-01-25 21:11:00) [47]
> Но почему, ведь я переменной comp явно назначаю значение
Вероятно FindComponent(node.Text) возвращает nil.
tazik (2005-01-25 21:10:00) [48]Но почему, ведь я переменной comp явно назначаю значение. Может с помощью указателя?
Gero (2005-01-25 21:08:00) [49]Вероятно Comp = nil.