バグ詳細

COMインターフェイスのメソッド呼び出しでこけます。
怪しいところは、メソッドへのポインタ取得とその呼び出し。
メソッドは以下のようにして取得しています。

a:=PChar(
Pointer(
Pointer(
    InterfacePointer
)^
)^
);
inc(a,sizeof(IInterface)*MethodIndex);

これで目的のインデックスのメソッドへのポインタが取得できるはず……
呼び出しは各種返り値の引数無しfunction(stdcall)を型定義して、上で取得したポインタをキャストして呼び出し。
引数は

asm
sub ESP, size
mov StkP, ESP
end;
Move(rect^, StkP^, size);

として、スタックに積む。なおポインタの数値の若い順に、第1引数、第2引数……という風に書き込まれる。
……どこが引っかかっているんでしょうか。誰かツッコミお願いします……