「なでしこv1」開発掲示板

なでしこv1のバグや要望を書き込む掲示板

(#2360) Re: 正規表現置換で置換対象が256の倍数のとき正しく動かない - うぇいく (2014-12-06 22:13) /中 未処理
利用している、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も説明が見当たらないものの、サンプルソースがそうなっている。)
正規表現置換で置換対象が256の倍数のと.. / クジラ飛行机 (2014-12-04 17:28) (#2355)/ 中 未処理
  Re: 正規表現置換で置換対象が256の倍数.. / うぇいく (2014-12-06 22:13) (#2360)/ 中 未処理
  (r331)で修正 / クジラ飛行机 (2014-12-08 23:24) (#2362)/ 中 確認待ち

(#2360)へ返信する:

👆お手数ですが、いたずら防止のために、「真夏」の読み方を記入してください。

編集時に使うキーを入力(省略可能)

画像ファイル(最大300KB)を添付可能