文書整形DLL(REP)の作成方法
※MIFES for Windows Ver.7.0をお使いの方へのカスタマイズ情報です。
文書整形用の外部DLLについて
【文書整形】の機能には、MIFES内部にそのプログラムを持っているものと、外部プログラムとして作成しMIFESから呼び出して実行する外部DLL(ダイナミック・リンク・ライブラリ)があります。
外部DLLはいくつでも追加することができます。
ここでは、外部DLLの作成方法について説明します。
文書整形機能では、MIFES本体とは静的にリンクしていない外部のDLL(ダイナミック・リンク・ライブラリ)を使用して、特殊なテキスト変換処理を実行することができます。
文字列を置き換えるような単純なものから、ファイル全体の内容を解析した上で、行を入れ替えたりファイル全体のテキストを一新したりと言った、特殊な変換処理まで可能です。
また、変換処理を実行するのはDLL内の関数ですから、ネイティブコード(CPUのマシンコード)で実行されることになり、高速な処理が可能なことに加え、C/C++などのコンパイラ言語を使用してどんな処理でも実現できます。
文書整形用の外部DLLの仕様
MIFESの文書整形用の外部DLLは、WIN32をプラットフォームとするDLL(ダイナミック・リンク・ライブラリ)です。
文書整形用DLLで使用する関数
外部DLLとしてMIFESから実行するために、以下の4つのエクスポート関数をすべて含んでいる必要があります。
※関数名をクリックすると、説明を参照できます。
Reform_Init |
文書整形のための前処理(専用のパラメータ入力など)を行います。 |
Reform_Findstr |
文書整形の対象となる文字列を1行分(1論理行分)ずつ受け取り、その文字列を検索した結果を返します。 |
Reform_Getdata |
文書整形の最後に呼び出される関数です。 |
Reform_Replace |
文書整形のための前処理(専用のパラメータ入力など)を行います。 |
MIFES本体とのデータの受け渡し
MIFESは、ユーザーが指定した文書整形用の外部DLLを動的にリンクした上で、上記の関数を呼び出して、MIFES本体とDLLの間でテキストデータ等の受け渡しを行います。
データの受け渡しには、以下の専用の構造体を使用します。
その際、受け渡しに使用する文字列は、すべてシフトJISコードです。
ハードタブはコード 0x09、改行はコード 0x0d,0x0a または 0x0a です。
struct REFORMDATA { |
//文書整形時のDLL間とのデータ受け渡し用構造体 |
|
HINSTANCE hlib; |
//DLLのインスタンス(DLL内で変更してはならない) |
|
FARPROC pfindstr; |
//DLL内の検索SS関数のアドレス(DLL内で変更してはならない) |
|
FARPROC pgetdata; |
//DLL内の置換文字列を返す関数のアドレス(DLL内で変更してはならない) |
|
LONG nextadd; |
//次に検索を開始するバイト位置(DLL内で変更してはならない) |
|
LONG nextp; |
//次に検索を開始する位置(DLL内で変更してはならない) |
|
int hardtab; |
//現在のハードタブ桁間隔 |
|
int margin; |
//現在の折り返し桁位置 |
|
int number; |
//旧行データの論理行番号(DLL内で変更してはならない) |
|
int oldsize; |
//旧行データの有効バイト数(DLL内で変更してはならない) |
|
BYTE oldstr[2048]; |
//旧行データ(DLL内で変更してはならない) |
|
int findpos; |
//旧行データの中で見つけた置換位置 |
|
int findsize; |
//旧行データの中で見つけた置換前文字列のサイズ |
|
int newsize; |
//新行データ/置き換え文字列の有効バイト数 |
|
BYTE newstr[4096]; |
//新行データ/置き換え文字列 |
} ; |
|
|
文書整形用DLLの説明文
「文書整形ダイアログボックス」で文書整形DLLを選択したときに表示される説明文は、内蔵のリソースとして文字列テーブル(STRINGTABLE)を定義し、文字列IDが 0 の文字列として、タイトル名(最大128バイト)を定義し、文字列IDが 1〜20 の文字列として、文書整形機能に関する説明文(最大2048バイト)を定義しておく必要があります。
文書整用DLLの保存場所と拡張子
作成した文書整形用DLLをMIFESで使用するために、MIFESのロードディレクトリ上にコピーしてください。
また、ファイルの拡張子を「.REP」に変更してください。
※文書整形DLLの作成方法については、サポートは行っておりませんのでご了承ください。
※MIFES付属の文書整形DLLや、当社ホームページからダウンロードした文書整形DLLを、MIFES以外のアプリケーションから利用することは許されていません。
サンプルソースのダウンロード
MIFES for Windows Ver.7.0に収録されている文書整形・外部DLLのソースです。オリジナル文書整形DLLの作成時などに、ダウンロードしてご参照ください。
このファイルを使用して、VC++で文書整形用の外部DLLを作成する手順は、以下の通りです。
- C言語ソースファイル(*.C)、リソースファイル(*.RC)、モジュール定義ファイル(*.DEF)を同一のディレクトリ上にコピーします。
- 変換処理を変更したい場合はC言語ソースファイルを変更します。
ダイアログボックスに表示される詳細説明を変更したい場合はリソースファイルを変更します。
- WIN32をプラットホームとするダイナミックリンクライブラリのプロジェクトワークスペースを作成します。
- C言語ソースファイル、リソースファイル、モジュール定義ファイルの3つのファイルをプロジェクトに追加します。
- リンクの出力ファイル名を変更します。この時、拡張子名を .REP にします。なお、必要に応じてコンパイルオプション、リンクオプション、デバッグオプションなどを設定してください。
- ビルドを実行します。
内容 |
説明 |
ダウンロード |
文書整形DLLサンプルソース |
MIFES for Windows Ver.7.0 文書整形・外部DLLのソースです。 |
rep_source.lzh |
この資料の内容は予告なしに変更されることがあります。
いかなる場合でも、この資料の内容およびその運用の結果に関しては一切の責任を負いません。
この資料に記載されている会社名、製品名は、各社の登録商標または商標です。
この資料の一部または全部を無断で使用、複製することはできません。
Copyright(C) MEGASOFT Inc.