掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
漢字からかなへの変換 (ID:25863)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
もう解決済みとのことですが。。。 昔、漢字氏名にとりあえずのふりがなをふる必要があって、使ったプログラムを書いておきます。 フォームに、ListBoxとEditとLabelを2つ貼って、こんなかんじで。。。 procedure TForm1.Button1Click(Sender: TObject); var imc: HIMC; // 入力コンテキストのハンドル KeyBoardLayout: HKL; // キーボードレイアウト DataList: PCandidateList; // CANDIDATELIST 構造体へのポインタ intSize: integer; // サイズ tmpPChar: PChar; offSet: DWORD; i, intIndex: Integer; begin Edit1.SetFocus; Label3.Caption := ''; Label5.Caption := ''; ListBox1.Clear; // 指定されたウィンドウに関連付けられている入力コンテキストを取得します。 imc := ImmGetContext(Application.Handle); try KeyBoardLayout := GetKeyboardLayout(0); // 変換結果を受け取るために必要なバッファサイズを取得します。 intSize := ImmGetConversionList( KeyBoardLayout, imc, PChar(Edit1.Text), nil, 0, GCL_REVERSECONVERSION); // DataListに、intSize分のメモリを割り当てます。 GetMem(DataList, intSize); try // Edit1.Textに入力された文字列を逆変換し、DataListに保存します。 ImmGetConversionList( KeyBoardLayout, imc, PChar(Edit1.Text), DataList, intSize, GCL_REVERSECONVERSION); tmpPChar := PChar(DWORD(DataList) + DataList^.dwOffset[1]); // フリガナを表示します。 Label3.Caption := String(tmpPChar); offset := 0; // 変換候補数を表示します。 Label5.Caption := IntToStr(DataList^.dwCount) + ' 件'; for i := 0 to DataList^.dwCount - 1 do begin tmpPChar := PChar(DWORD(tmpPChar) + offset); intIndex := ListBox1.Items.Add(String(tmpPChar)); offSet := Length(ListBox1.Items[intIndex]) + 1; end; finally // メモリを解放します。 FreeMem(DataList); end; finally // 入力コンテキストを解放し、コンテキスト内の関連メモリのロックを解除します。 ImmReleaseContext(Application.Handle, imc); end; end; これで、Editに漢字入力して、ボタンをクリックすると、変換候補数がLabelに、取得したふりがなが、Listboxに表示されます。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.