トピック
HRT-86_にでら mijuharuto

プチコンのIMEの変換について

プチコンのIMEにはRMG-IMEなどがありますが、ローマ字からの変換や漢字への変換の仕組みがいまいちわかりません。 該当データを探すためにDATAやREADを使うのはわかりますが、入力時に、例えば「A」や「NA」なら同じ「A」が入るので、なを入力しようとして「Nあ」というようにさせない仕組みを知りたいのです。 よく知っている方がいれば教えてください。
3そうだね
プレイ済み
返信[1]
親投稿
自分だったらNがでたら子音フラグを立て、 次に母音がでたら変換する。 という感じにします。
4そうだね
プレイ済み
返信[2]
親投稿
元々、K2KIMEに搭載されていた変換テーブルに足りない部分を追加して使っています 内容はこんな感じです↓ CH,ちゃ,ち,ちゅ,ちぇ,ちょ N,な,に,ぬ,ね,の この変換テーブルは二次元配列に保持していて 母音を入力されたら手前に子音があるか判断し、無ければ母音のひらがな変換を行います 子音二文字と合致するのか、一文字と合致するかを判断し 合致する部分を削って変換テーブルの中の文字列と置き換えてます んの扱いだけは特殊でソース見ないとハッキリ書けません(^^;)
1そうだね
プレイ済み
返信[3]
親投稿
漢字に変換する時は辞書に読み仮名と変換後の単語の候補を羅列します 単純に書くとこんな感じです↓ "かん","漢,感,間" これをデータに持っていて読み込むわけです 読み込んだデータの読み仮名と 入力された読み仮名とを比較して一致する単語のリストを表示しています そのリストを表示する時に変換済み、変換対象、未変換の3つに文字列を保持して 変換対象のみで一致する単語を読みに行くようにしているのが変換中の下画面になります
1そうだね
プレイ済み
返信[4]
親投稿
ソース確認したら変換があったか無かったかを判断する方が先でした 変換が無かった時には母音を代入します
1そうだね
プレイ済み
返信[5]
親投稿
「っ」「ん」の処理についてはSET_ROMAJIでやっていました 引数は 置換対象文字列長、編集中の文字列、変換後の文字列 置換対象文字列長の1つ前の文字を判断して同じ文字続いていたら「っ」を Nがあったら「ん」をセットするようにしています 「NN」の対応は上に書いた処理の後に記述しています ROMAJIで検索したら関数がヒットする筈なので該当箇所も見つけやすいかと思いますよ
1そうだね
プレイ済み
返信[6]
親投稿
HRT-86_にでら mijuharuto
少し質問なんですが、 このIN_ROMAJI関数の使い方がよくわかりません orz できれば教えてください。
0そうだね
プレイ済み
返信[7]
親投稿
IN_ROMAJIには編集中の文字列を入れます C$にはINKEY$()の値を ループする中で記入していくでしょうから 結果として返却される値は次の最初の引数になります 入力中、カーソルの移動が可能ならカーソルの手前までの文字列を渡してください
0そうだね
プレイ済み
返信[8]
親投稿
必要な変数と関数を丸ごとコピーして試す場合の お試しプログラムのソースはこちらになります
0そうだね
プレイ済み
返信[9]
親投稿
HRT-86_にでら mijuharuto
こう記述しても あ あい あいう あいうえ あいうえお あいうえおK あいうえおKあ (以下略) のように、か行がちゃんと表示されないんですが…
0そうだね
プレイ済み
返信[10]
親投稿
グローバル変数の定義は大丈夫でしょうか? DIM ROMA$[50,6] VAR ROMA_MAXLEN=0 ROMAJI_MAX_LENの分だけループして一致するか調べていて INITの中で設定するようにしているハズですがそこの値がおかしいとうまく動作しないと思うので
0そうだね
プレイ済み
返信[11]
親投稿
サンプルをアップしてみました 公開キー N2DXK3H4
1そうだね
プレイ済み
返信[12]
親投稿
HRT-86_にでら mijuharuto
ROMAJI_MAXLENの定義を忘れていたようです(^^;) 定義をしたらちゃんとできました。 ここでまた質問なんですけど(度々すみません)、漢字への変換はどんな風に行っているのでしょうか?
0そうだね
プレイ済み
返信[13]
親投稿
GET_KNJLISTという単語リスト取得関数があります よみがなを渡して辞書データを取得します 変換対象の読み仮名が『あう』なら『あ』をASCした結果がラベルの数値部分になりデータを読みます データ例↓ @LABEL_12354 DATA "あ","亜;0,阿;0" DATA "あう","会う;0,合う;0" その結果をリスト表示して 選択された単語と変換対象の読み仮名を入れ換えてます
1そうだね
プレイ済み
返信[14]
親投稿
HRT-86_にでら mijuharuto
初歩的な質問すみません。 読み込んだデータはどこに返されて、どんな型で出力されるのですか?
0そうだね
プレイ済み
返信[15]
親投稿
グローバル変数TNGL$配列に単語がセットされます KNDL$は現状使用していないので 意識しなくても構いません DATA "あう","会う;0,合う;0"    ↑会うはTNGL$に0はKNDL$にセットします
1そうだね
プレイ済み