掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
漢字のふりがなを取得するには (ID:22856)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
動的リンクだとちょっと長くなるのでとりあえず静的リンクの例 以下のユニットをサンプルAPPに追加してください 使用するための最低限の定義です //----------------------------------------------------------------------------- unit u_kakasi; // ファイル名は u_kakasi.pas とした interface function kakasi(AText: string; Arg: string = ''): string; // kakasi.dllの関数定義 function kakasi_getopt_argv(argc:integer; argv:pointer):Integer; cdecl; external 'kakasi.dll'; function kakasi_do(P: PChar):PChar; cdecl; external 'kakasi.dll'; function kakasi_close_kanwadict:Integer; cdecl; external 'kakasi.dll'; function kakasi_free(P: PChar):Integer; cdecl; external 'kakasi.dll'; implementation uses Windows, SysUtils, Classes; //--------------------------------------------------------------------- // -JK -HK function kakasi_setarg(Arg: string): Integer; var Argc: Integer; Argv: array [0..31] of string; procedure AddArg(S: string); begin S := Trim(S); if (Length(S) > 0) and (Argc <= High(Argv)) then begin Argv[Argc] := S; inc(Argc); end; end; var n: Integer; begin Argc := 0; AddArg('kakasi'); with TStringList.Create do try Delimiter := ' '; DelimitedText := Arg; for n := 0 to Count-1 do AddArg(Strings[n]); kakasi_close_kanwadict; Result := kakasi_getopt_argv(Argc, @Argv); finally Free; end; end; function kakasi(AText: string; Arg: string = ''): string; var P:PChar; begin Result := AText; if Length(Arg) > 0 then kakasi_setarg(Arg); P := nil; try P := kakasi_do(PChar(AText)); if P <> nil then Result := P; finally kakasi_free(P); end; end; end. //----------------------------------------------------------------------------- 条件) 1)環境変数'KANWADICTPATH'と'ITAIJIDICTPATH'が適切にシステムに登録されていること 2)'KAKASI'インストールディレクトリの kakasi.exe で変換が正常に動作する環境となっていること 3)kakasi.dllはDelphiのサンプルディレクトリと同じ場所かパスの効いている所にあること 使用例) Delphi-Appで Memo2.Text := kakasi(Memo1.Text, '-JH -KH'); ですべての漢字・カタカナをひらがなに変換します オプションについては kakasi.sjis を参照してください。 正式には動的リンクで組んだ方が良いでしょう。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.