问一下对象类型指针和NEW分配的指针保存在同一对象里面, 但是怎么区分??? ( 积分: 200 )

K

kk2000

Unregistered / Unconfirmed
GUEST, unregistred user!
TmyRec = record
ID: string;
end;
PTmyRec = ^TmyRec ;
比如: FSaveObj: TStrings
P: PTmyRec
FSaveObj.AddObject('AAA', Tedit1);
new(P)
FSaveObj.AddObject('AAA', P);

当我们取出 FSaveObj.object 的时候, 怎么知道它是什么
类型的指针?
 
TmyRec = record
ID: string;
end;
PTmyRec = ^TmyRec ;
比如: FSaveObj: TStrings
P: PTmyRec
FSaveObj.AddObject('AAA', Tedit1);
new(P)
FSaveObj.AddObject('AAA', P);

当我们取出 FSaveObj.object 的时候, 怎么知道它是什么
类型的指针?
 
if FSaveObj.object is PTmyRec then
....
else if FSaveObj.object is TEdit then
....
 
应该是没有好办法判断一个指针到底是指向什么类型的数据。
我觉得向list中加的时候最好把指针类型标示也加上,比如这样:
Tmydata = record
Pdata:pointer;
thetype:integer;
end;
Pmydata = ^Tmydata;
先把要加入的指针及其类型标示放到一个的统一的自定义类型中,然后再放入list
 
我觉得迷糊说得容易接受些,就是应该将指针和数据类型作为一条记录的字段来处理,这样不容易混淆。
 
同意迷糊的看法,还是应该统一一个类型。
 
其实我也想统一一个类型. 但在某些情况下会碰到这样的问题.
我已经遇上了, 不过我也用别的办法解决了.
所以来问一下. 大家有什么好办法. 迷糊老兄说的确实是个好办法.
 
用class代替record指针。
指针没类型可言,但是class有。
 
明天散分! 放假过年.
 
多人接受答案了。
 

Similar threads

顶部