ようこそゲストさん

つーさのくーかん -再誕-

2008/01/18(Fri) 漢字の読みを得るには

はてブ 2008/01/18 15:31 プログラミング::HSP3

難攻不落と思われた漢字逆変換問題だが、
A_Aと名乗る人物のたった一行の書き込みにより、
事態は急速に解決へと向かったのであった。

というわけで、モジュール化してみた。

春日の山に が しゅんじつのやまに とか出てくるが、
そこはご愛敬なのだと思う。

/* jprevcnv.hsp v0.01 */
#module mod_JPRevConv
#uselib "oleaut32.dll"
#cfunc SysAllocString "SysAllocString" wptr
#func  SysFreeString "SysFreeString" int
#cfunc SysStringLen "SysStringLen" int

#define IID_IFELanguage "{019F7152-E6DB-11D0-83C3-00C04FDDB82E}"
#define CLSID_MSIME "{019F7150-E6DB-11d0-83C3-00C04FDDB82E}"
#usecom  IFELanguage@mod_JPRevConv IID_IFELanguage CLSID_MSIME
#comfunc FELang_Open 3
#comfunc FELang_Close 4
#comfunc FELang_GetPhonetic 7 int, int, int, var

#deffunc init@mod_JPRevConv
	newcom pFEL, IFELanguage
	FELang_Open pFEL    
	return

#deffunc deinit@mod_JPRevConv onexit
	FELang_Close pFEL
	pFEL = 0
	return

#defcfunc JPRevConv str string
	inBstr = SysAllocString(string)
	FELang_GetPhonetic pFEL, inBstr, 1, -1, outBstr
	dupptr outWstr, outBstr, SysStringLen(outBstr)*2+2, 2
	ret = cnvwtos(outWstr)
	SysFreeString inBstr
	SysFreeString outBstr
return ret

#global
init@mod_JPRevConv

mes JPRevConv("冬過ぎて春来るらし朝日さす春日の山に霞たなびく")

#usecom だけなんでグローバルスコープになるんか、ちょっと納得いかんね。

1: 矢野 2008年01月18日(Fri) 午後9時01分

私のパソコンで実行すると、
「ふゆすぎてはるきるらしちょうにちさすかすがのやまにげたなびく」
と、違って表示されました。
私のパソコンは、WindowsXp sp2で、ATOK 2007を使用しています。
それにしても、どうして霞が「げ」になるのでしょう。

2: つーさ 2008年01月20日(Sun) 午後2時45分

おろー、バージョンによって取得できる文字列が異なるのか。

うちは、Win2Ksp2 + ATOK2007ですが、
このCOMコンポは、MSIME側で提供されるもののようなので、
おそらく内部ではMS-IME2000が結果を返しているのかな。
ちなみに、うちでは
「ふゆすぎてはるくるらしあさひさすしゅんじつのやまにかすみたなびく」
と出ているのですが。

3: hoo- 2008年08月12日(Tue) 午後1時17分

難攻不落と思われた漢字逆変換問題だが→なんこうふらくとおもわれたかんじぎゃくへんかんもんだいだが

すごい!


名前:  非公開コメント