如何用指针数组动态建立对象,且数组的成员个数不定。(50分)

  • 主题发起人 smallcat
  • 开始时间
S

smallcat

Unregistered / Unconfirmed
GUEST, unregistred user!
如何用指针数组动态建立对象,且数组的成员个数不定。
 
V

volan

Unregistered / Unconfirmed
GUEST, unregistred user!
采用TList对象:
var
n: Integer;
Component_List: TList;
Temp_Component,P: TComponent;
begin
Component_List := TList.Create;
New (p);
p := TComponent (Your_Component);
Component_List.Add (p);
...

Temp_Component := Component_List.Items[n];
...

Component_List.Free;

 
S

smallcat

Unregistered / Unconfirmed
GUEST, unregistred user!
这其中的这段代码
New (p);
p := TComponent (Your_Component);
Component_List.Add (p)
不知是否可重复应用,且若建立的是对象,而非组件,是否可行。
 
T

tqz

Unregistered / Unconfirmed
GUEST, unregistred user!
若你的对象已经建立,则因为他本身就是指针,可直接加入到TList中
List.Add(YourObject)
若尚未建立,可先创建,再加入List
YourObject:=TYourClass.Create;
List.Add(YourObject)
在读取对象的时候,要转换类型
if TObject(List.Items) is TYourClass then
TYourClass(List.Items).YourMethod
 
J

jghuang

Unregistered / Unconfirmed
GUEST, unregistred user!
要加对象当然可以,大家都是一个指针,
而且组件不也是对象吗.
 
V

volan

Unregistered / Unconfirmed
GUEST, unregistred user!
当然可以重用。

tqz的说法是对的
 
Z

zhaoyipeng

Unregistered / Unconfirmed
GUEST, unregistred user!
用TList是毫无疑问的,但下面这样的代码显然有问题
New (p);
p := TComponent (Your_Component);
Component_List.Add (p)
p已经是指针了,又new一下是什么呢?是一个TComponent的实例,
又让 p指向TCompnent(Your_Component),那么刚刚new出来的TComponent到哪去
啦???只能是丢了,显然是不对的。
其实上面的语句只需一句就够了:
Component_List.Add(TYour_Component.Create);

引用的时候可以用
with TYour_Component(Component_List.Item[n]) do

 
V

volan

Unregistered / Unconfirmed
GUEST, unregistred user!
zhaoyipeng说得对
对象本身就是指针!
 
S

smallcat

Unregistered / Unconfirmed
GUEST, unregistred user!
多人接受答案了。
 
顶部