ファイル タイプの編集

このウィンドウは、ファイル タイプ オプション ページからアクセスできます。このウィンドウを使用して、ファイル比較にどのタイプの比較ウィンドウを使用するかを決定するファイル パターンを編集します。

タイプ

このフィールドは、パターンフィールドで指定されているファイル パターン(ファイル拡張子)と一致するファイルを開く比較タイプを示します。

パターン

1 つのファイル パターン、またはセミコロンで区切った複数のファイル パターンを入力します。このパターン(ファイル拡張子)と一致するファイルは、上に示される比較タイプを使って比較されます。たとえば、イメージ ファイルに一致させるには *.bmp;*.gif;*.jpg;*.png を使用します。

フィルター プログラム

パターンと一致するファイルを開いている、または保存済みの場合、ファイルの内容をフィルター処理するのに使用する任意のフィルター プログラムを入力します。フィルター プログラムによって、Merge はフィルター処理しなければ理解できない形式のファイルの内容を比較できるようになります。

次の表では、フィルター プログラムが実装できるさまざまな方法を示します。また、それぞれの方法でフィルター プログラムフィールドに提供する情報についても説明します。

フィルターの実装 フィールドの値
バイナリ実行可能ファイル 実行可能ファイルのパス
スクリプト スクリプトのパス
DLL エクスポート関数 DLL のパス
インプロセス COM オブジェクトを提供する DLL オブジェクト CLSID

Araxis Merge インストール フォルダーの Filters サブフォルダー内にある、バイナリ実行可能ファイル、スクリプト、または DLL フィルターは完全修飾パスを必要としません。ユーザーが提供するバイナリ実行可能ファイル、スクリプト、または DLL はそのサブ フォルダーにコピーするか、あるいは別の場所に保管することができます。別の場所に保管する場合は、そのフィルター プログラムへの完全修飾パスをこのフィールドに入力します。

バイナリ実行可能ファイルまたはスクリプト フィルターの実装

バイナリ実行可能ファイルまたはスクリプトをフィルター プログラムとして定義する場合、そのフィルター プログラムは 1 つのオプション フラグと 3 つのファイル名引数で実行します。

  • オプション フラグは -f または -r です。これはそれぞれフォワード(ファイルの読み取り時)またはリバース(ファイルの書き込み時)変換が必要であることを示します。
  • 1 番目のファイル名引数は、フィルター プログラムによって変換されるデータを含んでいるファイルを指定します。
  • 2 番目のファイル名引数は、変換されたデータを書き込むファイルを指定します。
  • 3 番目のファイル名引数は、実行される変換について記述するキーと値を含んでいるファイルを指定します。ファイル内のコメントはその中に含まれているデータに関する説明です。

フィルターの実行可能ファイルまたはスクリプトが Merge で指定された入力ファイルに対し機能しない場合(たとえば、リバース変換がサポートされないなど)は、エラー メッセージを標準エラーに書き込み、ゼロ以外の終了コードを返します。

Merge では、バイナリ実行可能ファイルやスクリプトの複数のインスタンスを同時に実行させることができます。したがって、それに応じてフィルター プログラムを作成する必要があります。

DLL ベースのフィルターの実装

DLL ベースのフィルターは、インプロセス の COM オブジェクトとして、または名前付けされた特定の関数をエクスポートする DLL として作成できます。

Information 両方の DLL ベース フィルターの実装例が、Araxis Merge インストール フォルダーの AutomationSamples/Cpp/win32/ROT13Filter サブフォルダーにあります。

どちらのタイプの DLL ベース フィルターも、ITransformFilterInformation インターフェイスを実装するオブジェクトを受け入れます。このオブジェクトのプロパティは、バイナリ実行可能ファイルおよびスクリプトのフィルター プログラムが指定されたフィルター オプションと同じ情報を提供することを想定しています。

COM タイプ ライブラリをインポートする言語の場合、merge.tlb を Araxis Merge インストール フォルダーからインポートできます。C/C++ の場合、merge.h ヘッダー ファイルが Araxis Merge インストール フォルダー下の AutomationSamples/Cpp/Idl サブフォルダーにあります。

COM オブジェクト フィルター

COM オブジェクト フィルターは ITransformFilter インターフェイスを実装します。

このオブジェクトが、Merge で指定された入力ファイルに対し機能しない場合は、エラーを示す HRESULT が返されます。ユーザーに提供されるメッセージなどの追加エラー情報は、標準の COM IErrorInfo メカニズムを使用して提供できます。エラー メッセージが提供されない場合、返されるエラー コードに基づいて Merge がメッセージを作成します。

フィルター オブジェクトの各インスタンスは単一スレッドでのみ使用されます。しかし、Merge はオブジェクトのインスタンスを作成および使用する多くのスレッドを同時に持つことができるので、DLL は複数の同時インスタンスと同時スレッドをサポートする必要があります。Apartment スレッド モデルまたはフリー スレッド モデルを推奨します。

エクスポート関数フィルター

DLL から関数をエクスポートすることでフィルターを提供する場合、その関数は次の署名が必要です。

EXTERN_C STDAPI Transform(ITransformFilterInformation* information, BSTR* error)

この関数が、Merge で指定された入力ファイルに対し機能しない場合は、エラーを示す HRESULT が返されます。ユーザーに示される追加のエラー メッセージは BSTR* error 出力パラメーターを使用して提供できます。エラー メッセージが提供されない場合、返されるエラー コードに基づいて Merge がメッセージを作成します。

エクスポート関数は Merge の複数スレッドを同時に呼び出すことができます。そのため、この関数は完全に再入可能である必要があります。