ふりがなを取得するには


コメット  2003-11-27 20:11:01  No: 5788

こんにちは。
いつも参考させていただいています。

Edit1に名前を入力し、そのふりがな(入力したひらがな)を
Edit2に取り出すようにしたいのですが、どのようにコーディングすればよいのでしょうか?
過去に、「IMEの入力値を取得(よみがな)」という質問を参考にEditとLisBoxを利用して実行することはできましたが、ListBoxだと候補がたくさん出てきてしまって・・・。
入力したひらがなだけを取得したいのですが・・・。

よろしくお願いします。


にしの  2003-11-28 04:23:40  No: 5789

これでしょうか。
C++Builderのサンプルです。
http://www2.big.or.jp/~osamu/Delphi/Tips/key.cgi?key=10#0168.txt


コメット  2003-11-28 07:17:48  No: 5790

にしのさんに教えていただいたサンプルや、他にもいくつかの
サンプルを探して参考にコーディングしましたが、
下のコードでは、フリガナが半角カタカナになってしまいます。
ひらがなにするにはどこをどうしたらよいかがわからなくて・・・
見ていただけるとさいわいです。
よろしくお願いします。

uses imm;

function GetFurigana (Control:TwinControl):String;
var
        IMC:HIMC;
        Len:Longint;
        Str:String;

begin
        Imc:=ImmGetContext(Control.Handle);
        Len:=ImmGetCompositionString(Imc,GCS_RESULTREADSTR,nil,0);
        SetLength(Str,Len+1);
        ImmGetCompositionString(IMC,GCS_RESULTREADSTR,PChar(Str),Len+1);
        SetLength(Str,Len);
        Result:=Str;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
        Edit2.Text:=GetFurigana(Edit1);
end;


にしの  2003-11-28 09:37:07  No: 5791

半角カタカナであっています。
それを全角ひらがなにするだけです。
検索すれば結構出てきます。


tama  2003-11-28 18:28:00  No: 5792

こんなんありましたけど・・↓(やってることはサッパリわかりませぬ^^;)

function  TForm1.StrConv(Value: String; MapFlag: Integer): String;
//   LCMAP_FULLWIDTH:半角 → 全角
//   LCMAP_HALFWIDTH:全角 → 半角
//   LCMAP_HIRAGANA :全角カタカナ → ひらがな
//   LCMAP_KATAKANA :ひらがな → 全角カタカナ
//   LCMAP_LOWERCASE:大文字 → 小文字
//   LCMAP_UPPERCASE:小文字 → 大文字
  var
    DestStr: PChar;
    DestSize: Integer;
  begin
    Result := Value;
    DestSize := LCMapString(LOCALE_SYSTEM_DEFAULT, MapFlag,
                  PChar(Value), Length(Value), Nil, 0);
    if  DestSize = 0  then  Exit;
    DestStr := AllocMem(DestSize + 1);
    Try
      DestSize := LCMapString(LOCALE_SYSTEM_DEFAULT, MapFlag,
                    PChar(Value), Length(Value), DestStr, DestSize);
      if  DestSize = 0  then  Exit;
      Result := StrPas(DestStr);
    Finally
      FreeMem(DestStr);
    end;
  end;


コメット  2003-11-28 19:33:06  No: 5793

半角から全角にすることができました。
tamaさんのレスも参考にさせていただいたのですが、
ひらがなにはなぜだかならなくて・・・。
でも、全角カナでも十分なのでこれでいこうと思います。
本当にありがとうございました。

ただ、Edit1に「姓(スペース)名」と入れると、フリガナが
名だけしか取れないのですが、何が問題なのでしょうか?
再びご指導お願いします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加