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などを使ってみるわけです。