練炭ブログ

萌え壁紙、Irvine、DMonkey、Proxomitron などの情報を扱ってます。

Irvine のリンクのインポート機能で正規表現に , を使えない問題

コメントなし»

§問題の概要

リンクのインポート機能において、オプション→リンク→正規表現の欄に ~{m,n}~ という正規表現を記述すると、,; に置き換わり ~{m;n}~ となってしまう。

; は区切り記号なので ~{mn}~ という二つの正規表現として解釈されてしまい、その結果期待通りに動作しない。

例: [a-z]{1,3} と書く → [a-z]{1;3} に変わる → [a-z]{1 または 3} として解釈される。

元ネタ: http://hibari.2ch.net/test/read.cgi/win/1303889299/434n

§原因

myclasses.pas の procedure TExtensions.SetTextStr 内で、文字列を \s*[;,\n]\s* で分割しているため。

§対策

自分でビルドできる場合は、前述のソースの [;,\n][,\n] に書き換える。
(試していないけど多分それでいけるはず)

ビルド環境がない場合は、バイナリを直接書き換える。

  1. バイナリエディタで irvine.exe を開く。
  2. [;,\n] という文字列を検索する。16進数で検索する場合は 5B 3B 2C 5C 6E 5D
  3. ,; に書き換える([;;\n] にする)。

Irvine 1.3.1.127 であれば以下のように書き換える。
00095EE9: 2C 3B

§副作用

正規表現以外の欄でも、区切り記号に , を使えなくなる。
, を使う人はいないと思うので問題はないはず(Irvine の出力はもともと ; だし)。

他の機能にも何か影響があるかも。

コメントを残す

メールアドレスが公開されることはありません。