HP200LXでマイペディアを使う

(最終更新1999/05/11)

1.検索プログラムの入手

    私がダウンロードしてきたのはNiftyServeのFEYETOOLの下記のファイルです。

    FEYETOOL− LIB 2  ■FSW CD-ROM関連 総数 :47  登録数 :47  −
     48  HBF01272 94/06/07  143654  DIC023LE.LZH CD辞書検索 V0.23 DOS汎用版

2.圧縮辞書の作成

    辞書の元ネタは電子ブック版の「マイペディア」です。パソコンソフトとして
    販売されている「マイペディア97」などではありません。
    大きな本屋さん、あるいはパソコンソフトを扱う店でも入手可能だと思います。

    この電子ブックをキャディから取り出し、デスクトップパソコン(DOSが使用でき
    る物) で圧縮辞書の作成を行います。プログラムは上記のアーカイブに含まれる
    DICLSIC2.EXEです。たとえば以下のようなコマンドで実行します。

    C>DICLSIC2 -fd:\mypedia\start -Wc:\mypedia

    -fオプションは元々の辞書ファイルの在りかを示します。
    -Wオプションは作成される圧縮辞書のファイル名を示します。
    私の場合、20,261,635バイトの圧縮ファイルが作成されました。

3.プログラムの修正

    DOS が使えて、CD-ROMドライブが使えるパソコンならば、上記のパッケージに含
    まれるEXEファイルをそのまま使えばいいのですが、私がLXでdicを使おうとする
    と以下の2つの不具合に見舞われました。

    ・起動時にエラーメッセージ
    DOSのコマンドラインでdicを起動すると"MSCDEX get Drive Error"という
      メッセージが出てプログラムが終わってしまう。
    たしかに、LXにはCD-ROMドライブはついていませんのでもっともなメッセージ
      です。

      これに対処するため、main.cの368行辺りの
      #ifdef    MSCDEX
      if ( CD_mscdex_init() ) {
            fprintf(stderr, "MSCDEX get Drive Error\n");
            exit(1);
      }
      #endif

      この部分を

      /*
      #ifdef    MSCDEX
      if ( CD_mscdex_init() ) {
            fprintf(stderr, "MSCDEX get Drive Error\n");
            exit(1);
      }
      #endif
      */

      という感じにすべてコメント化してしまいました。これはMSCDEXの初期化を
      するとおぼしきルーチンを殺しています。

    ・プロンプトモードの表示が変
    上の問題を解決してから起動して、プロンプトモード(と勝手に呼びますが、
      DOS のコマンドラインで検索語を指定せず、検索する辞書だけ指定すると
      プログラムの出すプロンプトが表示され、そこで検索語を入力すると連続して
      検索できるモードになります)で検索語をかなで入力すると検索結果の項目名
      が入力した検索語と重なって見苦しい。

    例.「おおさか」と入力して検索すると項目名のところが「大阪Xか」と
          表示される。(Xの部分は半角ずれた結果の文字化けのようです)


      これに対してはdiclib.cの224行目辺りを修正しました。

      if ( extdisp_flag )
          pager(point_tab, mx, FALSE);
      else
          more(point_tab, mx);

      この部分を

      if ( extdisp_flag )
          pager(point_tab, mx, FALSE);
      else {             ←カッコを追加
          printf("\n");       ←この行を追加したかったので
          more(point_tab, mx);
      }               ←カッコを追加

      と変更しました。結果表示の前に改行を挿入しています。

    どちらの修正もかなり単純で対症療法的なので、別の不具合を引き起こす可能性
    もあります。
    私の環境では現在まで2ヶ月ほど使用していますが、特に問題は生じていません。

    ・DEFS.Hの修正(98/01/26追加)
      LXで使用する云々とは直接関係ないのですが、元々のソースでおかしいところ
      がありますのでDEFS.Hファイルの329行を以下のように書き換えて下さい。
      ("const"を書き加える)

      char      *strdup(const char *str);

      DIC023LE.LZH中のCOMPILE.DOCによればソース間の記述の不整合のようです。

4.プログラムのコンパイル

    修正した後にコンパイルを行います。
    私の使用したコンパイラはLSI-C の試食版です。

    MAKEFILE.LCCをMAKEFILEとリネームして、"DEFS ="で始まる行を以下のように
    修正してコンパイルします。

    DEFS = -DMSCDEX -DMSDOS -DSJIS -DANSIESC -DLSIC -DHISTORY

5.LX上での使用

    圧縮辞書とコンパイルして出来上がったdic.exeをLXで使用するフラッシュに
    コピーすれば使えるようになります。
    (dic.exeはPATHの通ったところにコピーして下さい)

    例えば、DOSプロンプト上で

    A>dic -fA:\mypedia おおさか

    などと入力すれば即座に結果が表示されます。ただ、分量の多い項目だと流れて
    いってしまい、内容が読めませんので私は以下のようなバッチファイルを作り、
    結果をログファイルに落とすようにしています。

    @echo off
    del a:\dic.log
    dic -fa:\mypedia -La:\dic.log

    -fオプションは辞書ファイルの指定、-Lオプションはログファイルの指定です。
    2行目でログファイルを削除していますが、これは必須ではありません。削除し
    なければファイルの後ろへどんどん検索結果が追加されていくので、場合によっ
    てはその方が便利かもしれません。
    このバッチファイルを実行するとdic がプロンプトを表示するので検索したい
    言葉を入力して改行すると続けて何回でも検索が出来ます。最後に/endと入力す
    るとプログラムを終了しますので、ログファイルをLEなどを使ってみるわけです。

1998/02/17
実行ファイルの配布を希望された方がありましたのでここに公開します。内容は上に書いたとおりの修正をソースに加えて生成したexeファイルのみです。特にドキュメントは添付しておりません。ドキュメント及びソースの必要な方は上に書いたNiftyServe上のライブラリもしくはベクターソフトウェアの該当ページから入手して下さい。
お約束ですが、このプログラムを使用した事によって発生したいかなる不利益も私(ototo)は保証いたしません。また、原作者であるMIYAZAKI氏とも無関係に公開しておりますのでご承知おき下さい。

dicforlx.lzh


1998/04/02
小宮和之さんからのメールによるとアスキーの発売しているCD-ROM辞書である「辞・典・盤」に収録されている「マイペディア」でもdicを使った検索ができるそうです。このパッケージには国語辞典、英和/和英、知恵蔵、それとマイペディアが収録されていて\9996ですからお買い得かもしれません。単体のパッケージに比べると音声や画像のデータが削られているそうですが、LXでは関係ないですし。フラッシュに余裕がある方なら試してみる価値ありかも。


1999/05/11
dicの改良版が公開されました。平野章彦さんによる「DIC V0.23 + 0.0001」です。NIFTYSERVEの「FHPPC LIB 7 #974」で入手可能です。辞書データに音声や画像用の制御コードが入っていた場合、読み飛ばすように改良されています。それと、私が上で説明した変更点も反映されていますので、LXで使う上では現時点で最強でしょう。Niftyを利用できる方は是非、ダウンロードして使いましょう。


「HP200LXの話/2.ソフトウェア/百科事典」へ

ホームページへ


©ototo