Request/159 のバックアップ(No.1)




スペルチェック

  • ページ: Request
  • 投稿者: request.txt?
  • 優先順位: 低
  • 状態: 提案
  • カテゴリー:
  • 投稿日: 2007-04-05 (木) 00:43:15
  • バージョン:

メッセージ

スペルチェックの処理概要

0.初期化

//Aspellの使用を開始する。
AspellConfig* spell_config = new_aspell_config();
aspell_config_replace(spell_config, "lang", "en_US");
//Aspellを配置しているフォルダを指定する。
aspell_config_replace(spell_config, "prefix", "C:/Program Files/Aspell/");
AspellCanHaveError* possible_err = new_aspell_speller(spell_config);
AspellSpeller* spell_checker = 0;
if (aspell_error_number(possible_err) != 0)
  puts(aspell_error_message(possible_err));
else
  spell_checker = to_aspell_speller(possible_err);

0a.ダイアログで、ファイル先頭からチェック、カーソル位置からチェック、キャンセルのいずれかを選択する。
なお、マクロから呼ばれることを考慮して、ダイアログをスルーできる機能も持つとよい。
1.次の単語に移動機能を使って単語を取得する。
2.無視リストに登録された単語なら1に戻る。
2a.置換リストに登録された単語なら置換して1に戻る。
3.aspellで単語を検索して候補を取得する。

//単語の候補リストを取得する。
AspellWordList* suggestions = aspell_speller_suggest(spell_checker, word, size);
AspellStringEnumeration* elements = aspell_word_list_elements(suggestions);
const char* word;
while ( (word = aspell_string_enumeration_next(aspell_elements)) != NULL ){
  //候補リストに追加する。
}
delete_aspell_string_enumeration(elements);

4.候補が1個の場合は1に戻る。
5.候補が複数個の場合は選択ダイアログを表示する。

Label: 元単語
TextBox: 新単語
ListBox: 単語候補
Button: 無視
Button: すべて無視
Button: 置換
Button: すべて置換
Button: 登録
Button: 中止

6.「無視」を選択した場合、1に戻る。
7.「すべて無視」を選択した場合、単語を無視リストに登録して1に戻る。
8.「置換」を選択した場合、選択された候補と置換して1に戻る。
9.「すべて置換」を選択した場合、置換リストに登録して8に進む。
10.「登録」を選択した場合、単語をパーソナル辞書に登録して1に戻る。

//新しい単語を辞書に登録する。
if(personal){
  aspell_speller_add_to_personal(spell_checker, word, size);
}else{
  aspell_speller_add_to_session(spell_checker, word, size);
}

11.「終了」を選択した場合、スペルチェックを中止する。
12.終了

//オブジェクトを削除する。
delete_aspell_speller(spell_checker);
削除(possible_err);
削除(spell_config);
  • 無視リスト:スペルチェック中のみ有効な、スペルチェックを無視する単語表
    std::map<string>
  • 置換リスト:スペルチェック中のみ有効な、スペルチェックで全置換対象になった単語表
    std::map<string,string>
  • パーソナル辞書:ユーザが新たに登録する単語表(半永久保存)。aspell機能にある。
  • 選択ダイアログ:beckyのスペルチェック画面を参考にするとよい。
CAspell.cpp/.h
  CDllHandlerを継承した作成するapsell.dllにアクセスするクラス
CDlgAspell.cpp/.h
  CDialogを継承したスペルチェックの動作を選択するダイアログ
設定画面
  apsell.dllのパスを指定する項目
  apsellのインストールパス(辞書を探すために必要)
  (通常はdllの場所がわかれば../を指定すればよいので、1個目のみでもよい)

  • aspell - http://aspell.net/ を使う方法があります。 -- 2008-02-18 (月) 20:14:21

URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White
[添付ファイル一覧] [全ページの添付ファイル一覧]
アップロード可能最大ファイルサイズは 2,048KB です。

    ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS