C++BuilderからHmJre.dllのReplaceRegularNoCaseSense関数を使う

C++Builder XE5からHmJre.dllのReplaceRegularNoCaseSense関数を使う方法です。

先ほどのエントリー「DelphiからHmJre.dllのReplaceRegularNoCaseSense関数を使う」のC++Builder版になります。

/**
 * 特定の文字列から特定の正規表現パターンのマッチングをして、
 * ヒットした場合はパラメータに従った置換を実行し、
 * その置換した結果の文字列を返します。
 */
typedef char* WINAPI(*TReplaceRegularNoCaseSense)(
    // 検索したい正規表現文字列
    char* pszPattern,
    // 検索対象の文字列
    char* pszTarget,
    // 検索を開始する桁位置
    int iStart,
    // 検索でヒットした文字列を置換する用の文字列
    char* pszReplace,
    // 0.最初にヒットした文字を置換、1.ヒットしたすべての文字を置換
    int iMode);

void __fastcall TForm1::Button1Click(TObject *Sender) {
    HMODULE dll = LoadLibrary(L"HmJre.dll");
    TReplaceRegularNoCaseSense ReplaceRegularNoCaseSense =
        reinterpret_cast<TReplaceRegularNoCaseSense>(GetProcAddress(dll, "ReplaceRegularNoCaseSense"));
    AnsiString s = ReplaceRegularNoCaseSense("([a-z]+)([0-9]+)",
        "--abcdefg1234567--", 0, "\\2\\1", 1);
    ShowMessage(s);
    FreeLibrary(dll);
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です