从类过程或函数中获取对象数据?

时间:2009-11-02 15:07:54

标签: delphi delphi-7

有没有办法从类过程或函数中获取Object数据而不实例化它?

4 个答案:

答案 0 :(得分:2)

你似乎错了:

  • 类是关于数据如何在内存中布局的规范,包括代码,但没有数据。
  • 对象是实例,意味着它们是内存中的数据,与类型相关联。
  • 类方法是可以访问类信息但无法访问数据或实例的方法。这样,就可以在没有实例化的情况下调用它们。

如果没有实例化,则没有数据,如果数据不存在,则无法访问数据。

答案 1 :(得分:0)

我不确定这是你在说什么,但是......

type
  tmyclasstype = class of tmyclass;

  tmyclass = class(TObject)
   class function a:integer;
   class function b:tmyclass;
   class function c:tmyclasstype;
  end;

...

class tmyclass.function a:integer;
begin
  result := 0;
end;

class tmyclass.function b:tmyclass;
begin
  result := tmyclass.create;
end;

class tmyclass.function c:tmyclasstype;
begin
  result := tmyclass;
end;
IIRC,这些都是类方法的有效例子。其他任何内容都无效,因为您无法访问对象的任何结构,变量或非分类方法而无需实例化它。

答案 2 :(得分:0)

要添加Ryan的答案,您可以调用类函数而无需实例化此类对象:

var 
   MyInt: Integer begin
begin
   MyInt := TMyClass.a;

答案 3 :(得分:0)

尝试使用类似的东西:

fClass := TComponentClass(GetClass(fNode.NodeName));
fControl := TControl(fClass.NewInstance);
fControl.Create(...)