Есть ли способ получить данные объекта из его процедуры или функции класса без создания экземпляра?Получить данные объекта из класса Процедура или функция?
0
A
ответ
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(...)
Что именно вы имеете в виду? Ваш вопрос немного расплывчатый, и пример поможет. –
Если у вас есть конкретная информация, которую вы надеетесь найти об объекте, попробуйте опубликовать новый вопрос, рассказывающий, что вы действительно хотите. –