2009-11-02 1 views
0

Есть ли способ получить данные объекта из его процедуры или функции класса без создания экземпляра?Получить данные объекта из класса Процедура или функция?

+1

Что именно вы имеете в виду? Ваш вопрос немного расплывчатый, и пример поможет. –

+0

Если у вас есть конкретная информация, которую вы надеетесь найти об объекте, попробуйте опубликовать новый вопрос, рассказывающий, что вы действительно хотите. –

ответ

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(...)