利用している、BRegExpのAPI、BSubStの宣言ミスのようです。
本来、関数の型はInteger(32bit整数)であり置換した回数を返しているものを、APIBooleanで宣言して受け取っていしまっているため、最下8bitが0の場合に、Falseと判断を間違えてしまうようです(DelphiだかPascalの仕様だった気が)
おそらく、参考にしたCのソースではBOOLを使っていたのを、そのままDelphiでBooleanにしてしまったのではないかと思います。
(WindowsのCのBOOLの場合、32bits幅すべてで0の場合だけFalseとして評価されます。なので、CのBOOLとしてなら、1回以上の置換の判定としてBOOLとして扱うのは間違いではありません)
なお、BTransとBSplitも数を返すようなので、256の倍数だと誤動作しそうです。
(BMatchは真偽っぽい。オフィシャルサイトのどのAPIも説明が見当たらないものの、サンプルソースがそうなっている。)