「なでしこ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)を添付可能