0

インスタンス化せずにクラス プロシージャまたは関数からオブジェクト データを取得する方法はありますか?

4

4 に答える 4

2

あなたはそれを間違っているようです:

  • クラスは、コードを含むがデータを含まないデータをメモリに配置する方法の仕様です。
  • オブジェクトはインスタンスです。つまり、型に関連付けられたメモリ内のデータです。
  • クラス メソッドは、クラス情報にアクセスできるが、データやインスタンスにはアクセスできないメソッドです。このようにして、インスタンス化せずに呼び出すことができます。

インスタンス化がなければ、データは存在せず、データが存在しない場合はデータにアクセスできません。

于 2009-11-02T17:47:58.217 に答える
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、これらはすべてクラスメソッドの有効な例です。オブジェクトをインスタンス化せずにオブジェクトの構造、変数、またはクラス化されていないメソッドにアクセスすることはできないため、それ以外は無効です。

于 2009-11-02T17:13:28.980 に答える
0

ライアンの答えに追加するには、次のようなオブジェクトをインスタンス化せずにクラス関数を呼び出すことができます。

var 
   MyInt: Integer begin
begin
   MyInt := TMyClass.a;
于 2009-11-02T17:41:21.163 に答える
0

そのようなものを使用してみてください:

fClass := TComponentClass(GetClass(fNode.NodeName));
fControl := TControl(fClass.NewInstance);
fControl.Create(...)
于 2011-01-20T19:07:11.397 に答える