私が達成しようとしていることをよりよく説明するために、私はうまくいくものから始めます。
別のプロシージャを呼び出して文字列パラメータを渡すことができるプロシージャがあるとします。
procedure CallSaySomething(AProc: Pointer; const AValue: string);
var
LAddr: Integer;
begin
LAddr := Integer(PChar(AValue));
asm
MOV EAX, LAddr
CALL AProc;
end;
end;
これは、私たちが呼び出す手順です。
procedure SaySomething(const AValue: string);
begin
ShowMessage( AValue );
end;
これで、 SaySomethingをso(テスト済みで動作(:))のように呼び出すことができます。
CallSaySomething(@SaySomething, 'Morning people!');
私の質問は、どうすれば同様の機能を実現できるかということですが、今回はSaySomethingをメソッドにする必要があります。
type
TMyObj = class
public
procedure SaySomething(const AValue: string); // calls show message by passing AValue
end;
だから、あなたがまだ私と一緒にいるなら...、私の目標は次のような手順に到達することです:
procedure CallMyObj(AObjInstance, AObjMethod: Pointer; const AValue: string);
begin
asm
// here is where I need help...
end;
end;
かなりの数のショットを出しましたが、組み立ての知識は限られています。