>関数を渡すことの利点

それは、たんにルーチンを一般化するってだけ。
たとえば、関数内で直接 Boolean変数を参照すると、
グローバル変数の参照になっちゃうでしょ。

例に出したディレクトリ検索ルーチンみたなものを
自作ライブラリなんかに入れたときに困ることがあるし。

それに、中断機能を使わない場合なんかに、グローバル変数だけ
残るのもなんか汚いし。使う必要が内場合でも気持ち良く出来るように、
関数を指定しなくても良いようにしてあるという…

function Proc(....; CheckFunc:TCheckFunc=nil):...

の =nil のぶぶん。