Lazarus/delphiのメンバ関数のポインタを取得する方法はありますか?ラザロで
variable required
:
Error: Incompatible types: got "<procedure variable type of function(Byte):LongInt of object;StdCall>" expected "Pointer"
メンバー関数delphiのポインタを取得
コード:
TClassA = class
public
function ImportantFunc(AParameter: byte): integer; stdcall;
end;
TClassB = class
public
ObjectA: TClassA;
ImportantPtr: pointer;
procedure WorkerFunc;
end;
function TClassA.ImportantFunc(AParameter: byte): integer; stdcall;
begin
// some important stuff
end;
procedure TClassB.WorkerFunc;
begin
ImportantPtr := @ObjectA.ImportantFunc; // <-- ERROR HERE
end;
私は
エラーは、Delphiで です....コンパイルされません。このコードを持っています
ありがとう!
を使用するだけでスコープに関数名が必要な場合は?メソッドを 'class'メソッドとして定義し、' TMethod.Code'ポインタをコールバックとして渡すことができますか?か否か? – teran
@David:そうです。私はコールバックとしてそれを使用したい。しかし、「TClassA」は実際にはTCollectionItem(!)なので、すべての項目には独自のWindowsコールバックが必要です:(したがって、グローバルスコープ内で定義することはできませんが、それは不可能であると信じることはできません。 – Peter
@teranは、クラスメソッドではなく静的でなければならないでしょう –