as の前に nil のチェックを入れた方が良さそう。
as のみの場合は軽いチェックにしか使えないな。

var
 Hoge: THoge;
begin
 Hoge := nil;
 (Hoge as THoge).Test;
 Hoge.Test;
end;

どちらも Test が呼び出されるけど、おかしいよね。
どうしてBorlandは nil as で例外を出さないようにしたのかな。
nil is は False なのに。
昔のDelphiは nil is が True を返してたけど、
このあたりの仕様の解りずらさが関係してたのかな。

>>237
私は型チェックもするし、紛らわしい名前も付けないように努力してますよ。