TList に色々な型のオブジェクトを追加しておいて1つずつ取り出してはインターフェース変数に代入したいのですが、
TList から取り出すと Pointer 型なので代入できません。

p := list[i];
if (TObject(p^).ClassType = TAAA) then intf := TAAA(p^) else
if (TObject(p^).ClassType = TBBB) then intf := TBBB(p^) else

こんな方法しか無いのでしょうか?