如何在类中取得运行时对象的名字等信息?(50分)

  • 主题发起人 主题发起人 正诚
  • 开始时间 开始时间

正诚

Unregistered / Unconfirmed
GUEST, unregistred user!
比如我有一个线程类TMyThread,其中一个方法TMyThread.CreateForm用来建立窗体,
然后我想将当前对象的名字赋给窗体名,请问在TMyThread.CreateForm中如何
得到当前对象的名字呢?
 

Obj.ClassName;
 
Object.ClassName
 
这个只是得到类的名字,不是对象的名字啊;(
 
uses TypInfo;
...
GetStrProp(Sender, 'Name');

// Sender 就是对象
 
你指Name吗?
在VCL好象Name属性是从TComponent才有这个属性的
 
对不起,我是初学者,能不能讲清楚些,GetStrProp我找不到这个帮助信息,
sender参数我该传什么,'Name'是什么?
 
是不是我没说清楚,我的意思是:
unit1
...
var
a,b:TMyThread;
procedure xxx.button1click()
begin
a:=TMyThread.create();
b:=TMyThread.create();
end;
当a,b这两个线程运行时,每个线程会创建自己的窗体,我就是想把a,b这两个名字赋给
他们创建的窗体,来区分哪个窗体是哪个线程创建的。
 
to 正诚:你的 a和b是指向线程的指针,在线程内它是不知道有哪个指针指向了这个线程.
你在你的线程类中定义一个成员变量(比如name)记载一下不就行了,当成私有的可以在create的时候
当参数传进去,也可以当成公有的在创建后制定.
 
>> 比如我有一个线程类TMyThread,其中一个方法TMyThread.CreateForm用来建立窗体,
>> 然后我想将当前对象的名字赋给窗体名,请问在TMyThread.CreateForm中如何
>> 得到当前对象的名字呢?
~~~~~~~~~~~~~~

GetStrProp(当前对象的名字, 'Name')
返回"当前对象的名字"的名字,

GetStrProp 函数在帮助里没有的,就是取得一个对象 的 String 型属性的值

 
我有点懂你的意思,不过像这种指针的名字一般存在什么地方?就没有办法取得吗?
总该有块内存来放他吧?
 
在窗体的Public中加入一个变量
public
FromThreadName:String;
end;
当窗体创建后把这个属性赋值
 
感谢各位,我不是关心怎么达到目的,而是想了解一下类与对象的关系,我以前在什么地方
看到过类函数的概念,但记不清了,据说可得到与类相关的信息,我以为会用这个办法实现,
但听了xeen的说法后觉得好像没希望了。
 
再次感谢各位
 
后退
顶部