2009-11-02 22 views
0

有沒有辦法從它的類過程或函數中獲取Object數據而不實例化它?從類中獲取對象數據過程或函數?

+1

你到底是什麼意思?你的問題有點模糊,一個例子會有所幫助。 – 2009-11-02 15:24:23

+0

如果您希望找到有關對象的特定信息,請嘗試發佈一個新問題,告訴您真正想要的內容。 – 2009-11-02 18:19:55

回答

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,這些都是類方法都是有效的例子。其他任何東西都是無效的,因爲您無法訪問對象的任何結構,變量或非分類方法而無法實例化它。

0

要添加到瑞安的回答,您可以調用類的功能,而無需實例化對象,比如這個:

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

你似乎已經得到了一個錯誤:

  • 類是規範如何數據被放置在內存中,包括代碼,但沒有數據。
  • 對象是實例,意味着它們是內存中的數據,與類型相關聯。
  • 類方法是有權訪問類信息,但無法訪問數據或實例的方法。這樣,它們可以在沒有實例化的情況下被調用。

沒有實例化,沒有數據,如果不存在數據,則無法訪問數據。

0

嘗試使用類似的東西:

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