Получить данные объекта из класса процедуры или функции? - PullRequest
0 голосов
/ 02 ноября 2009

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

Ответы [ 4 ]

2 голосов
/ 02 ноября 2009

Вы, похоже, ошиблись:

  • Классы - это спецификация того, как данные размещаются в памяти, включая код, но без данных.
  • Объекты - это экземпляры, означающие, что они представляют собой данные в памяти, связанные с типом.
  • Методы класса - это методы, которые имеют доступ к информации о классе, но не имеют доступа к данным или экземплярам. Таким образом, их можно вызывать без создания экземпляров.

Без создания экземпляра нет данных, и вы не можете получить доступ к данным, если их там нет.

0 голосов
/ 20 января 2011

Попробуйте использовать что-то подобное:

fClass := TComponentClass(GetClass(fNode.NodeName));
fControl := TControl(fClass.NewInstance);
fControl.Create(...)
0 голосов
/ 02 ноября 2009

Чтобы добавить ответ Райана, вы можете вызывать функции класса без создания таких объектов, как этот:

var 
   MyInt: Integer begin
begin
   MyInt := TMyClass.a;
0 голосов
/ 02 ноября 2009

Я не уверен, о чем ты говоришь, но ...

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, это все действительные примеры методов класса. Все остальное недопустимо, поскольку вы не можете получить доступ к любым структурам, переменным или неклассифицированным методам объекта без его создания.

...