PREV | PAGE-SELECT | NEXT

≫ EDIT

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

| スポンサー広告 | --:-- | comments(-) | trackbacks(-) | TOP↑

≫ EDIT

小物ツール改良と正規表現ライブラリ

昨日公開した定型文ツールですが、カテゴリ名が変更できない不具合の修正と、正規表現のエンジンの挿しかえをしました。

正規表現はVC++用にマイクロソフトが提供しているGRETAと言うライブラリを拾ってきました。これで正規表現の置き換えはちゃんと動くようになったと思います。正規表現の置き換えの場合のみ、置き換え後「\\n」は改行に置き換える様にしています。

定型文ツールはカテゴリを作成し、作成した各カテゴリ毎に最大26項目まで定型文や選択文に対する変換処理を登録できます。

GRETAのライブラリについて少し説明して置きますと、Visual C++ 6.0から利用できる正規表現用のライブラリで、上記URLからダウンロード後以下の手順でプロジェクトに組み込めます。MFCのプログラムに埋め込もうとした所上手く行かなかったので、MFCを使わない素のDLLで一旦作成し、MFCのプログラムから呼び出すようにしました。

1.「regexpr2.cpp」と「syntax2.cpp」の2つのファイルをVC++のプロジェクトに含めます。
2.上記2つのファイルはプリコンパイルヘッダを使わない様設定します。
3.ここの情報を参考にsyntax2.hを修正します。
4.コードを書いてビルドします。

以下はDLLで外部から使えるようにしたソースコード。sourceの文字列に対し、searchのパターンをreplaceに置き換えます。ただし、一点問題があり、searchパターンの記述に不備があった場合、下記コードのままだとプログラムがエラーで落ちます(エラーのcatchの仕方が分からなかったので省略)。

#include "stdafx.h"
#include <iostream>
#include <string>
#include "regexpr2.h"
#include "export.h"
using namespace std;

DllExport long FAR PASCAL RegexSubst(char *source,char *search,char *replace)
{
    string str(source);

    regex::rpattern subst(search,replace, regex::GLOBAL|regex::MULTILINE);
    regex::subst_results substitute_results;
    subst.substitute(str, substitute_results);

    strcpy(source,str.c_str());

    return 0;
}



誰かの参考になれば。

| 開発 | 01:19 | comments:0 | trackbacks:0 | TOP↑

COMMENT















非公開コメント

TRACKBACK URL

http://nefa.blog117.fc2.com/tb.php/288-c688c302

TRACKBACK

PREV | PAGE-SELECT | NEXT

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。