いくつかのオブジェクトを格納する TList があります。これで、そのリストに対していくつかの操作を行う関数ができました。
function SomeFunct(const AIndex: integer): IInterface
begin
if (AIndex > -1) and (AIndex < fMgr.Windows.Count ) then
begin
if (fMgr.Windows[AIndex] <> nil) then
begin
if not Supports(TForm(fMgr.Windows[AIndex]), IMyFormInterface, result) then
result:= nil;
end;
end
else
result:= nil;
end;
今、本当に奇妙なのは、適切なインデックスで fMgr.Windows にアクセスすると EListError が発生することです... 私はそれをデバッグしようとしましたが、関数は引数0と1で2回呼び出されます(想定どおり)。
AIndex = 0 の場合、fMgr.Windows[AIndex] を評価すると $someAddress で EListError が発生しますが、代わりに fMgr.Windws[0] を評価すると、適切な結果が返されます ...
さらに奇妙なことに、EListError があったとしても、関数は適切なデータを返します...そして何も表示しません。シャットダウン時の 2 つの EListError メモリ リークに関する情報のみ (FastMM を使用)
何が間違っているのでしょうか?
前もってありがとうミハル