告知欄です
1- レス

旧雑記サルベージ


[85]管理人 ★:06/09/06 17:38 ID:???
2005年10月24日
■AutoHotkeyでBREGEXP.DLLを使う
作った。
BREGEXP(lukewarm.s101.xrea
とりあえず、マッチした文字列とパターンの()内にマッチしたサブマッチ文字列を得る関数と、置換を行う関数を作った。
マッチ結果は、グローバル変数の偽配列として格納することにした。
全てのマッチ文字列を検索する関数も作った。
マッチした文字列ではなく、マッチ部分の位置を得る機能も作ろうと思ったが、面倒なんでやめた。
TransとかSplitも面倒なんで作っていない。
BREGEXPでは、処理結果を構造体として保持する。
AutoHotkeyでは構造体は使えないので、保持されたメモリ領域から値を取り出す処理を記述してやる必要がある。
ヘルプにそれらしいコードがあったが、やけに冗長なのでRtlMoveMemoryというAPIを使って代用した。
自前で確保した変数からの取り出しは上手くいったが、BREGEXPの構造体から値を取り出そうとすると0xC0000005番のエラー(メモリのアクセス違反)になる。
どうやら、AutoHotkeyが関数呼び出しのたびにBREGEXP.DLLを開放してしまっているのが悪いらしい。
自前でLoadLibrary/FreeLibraryを行うようにしたら、正常にアクセスできるようになった。


名前

E-mail



0ch BBS 2005-10-08