HTMLヘルプのMAPヘッダファイルをDelphiユニットに変換「map2unit」

HTMLヘルプを作るには通常HTML Help Workshopを使うが、状況依存型のヘルプを作る場合、以下のような手順が必要になる。

状況依存型のヘルプとは?
例えば、設定ダイアログを開いているときにヘルプを表示すると、設定ダイアログの説明が表示されることを言う。ユーザーの立場からすれば当たり前の動作だが、プログラムで実装するのは結構面倒である。
  1. ヘルププロジェクトにエイリアスを設定する
    
    [ALIAS]
    IDH_MAINWINDOW=mainwindow.html
    IDH_OPTIONDIALOG=option.html
    
    
  2. ヘッダファイルを作成する
    (例)次のようなヘッダファイル"helptest.h"を作成する。
    
    #define IDH_MAINWINDOW   100
    #define IDH_OPTIONDIALOG 200
    
    
  3. プロジェクトにMAPセクションを追加し、読み込むファイルを指定する
    
    [MAP]
    #include helptest.h
    
    
  4. ヘルププロジェクトをコンパイルする。

C/C++なら、"helptest.h"をインクルードすれば以下のように呼び出せるようだ。


  HtmlHelp(Handle, HelpFileName, 
      HH_DISPLAY_TEXT_POPUP, IDH_MAINWINDOW);

しかし、Delphiではヘッダファイルを以下のように書き直さなければならない。


unit helpdef;

interface

const
  HLP_IDH_MAINWINDOW = 100;
  HLP_IDH_OPTIONDIALOG = 200;


はっきり言ってこんなこと、手作業でやるのはばかばかしい。プログラムにやらせればいいのだ。そのために作ったのがmap2unitだ。

map2unitの遣い方は以下の通り。ちなみにmap2unitはコマンドプロンプトで動くコンソールアプリだ。

map2unit 変換元ヘッダファイル名 変換先ユニットファイル名

コンソールアプリにした理由は、私の自動ビルドプログラムで動かすのに都合がいいからだった。ただ、ラッキーなことに、Delphi2007になってビルドシステムがMS-Buildに変更され、ビルド前と後に任意のコマンドを実行できるようになった。私はビルド前にmap2unitを実行し、helpdef.pasを最新の状態にしてからコンパイルしている。このおかげでヘルプファイルに手を加えても、Delphiプロジェクトでは一切気にする必要がなくなった。

ブログ

アプリケーション

Delphiライブラリ

PHP