dllfuncに受け渡しする文字列の文字コードNo.06049
緒方聡 さん 09/02/19 22:25
 
お世話になっています。

中国語の辞書っぽいものを作成しようと思って
DLL のプロトタイプを作成しました。

ですが、困ったことに GB2312 範囲の文字は
DLL で受け取った時点で '?' に変わってしまいます。

dllfunc で文字列を DLL に渡す際には
Shift_JIS(CP932)で渡しているのでしょうか。

やりたいことは以下のとおりです。

・選択範囲の文字列を DLL に渡して辞書を引く
・辞書を引いた結果を戻したい(Unicode で)

以下のような回避方法を考えました。

・unicode() 関数を使用して一文字ずつ DLL に数値で渡す
・辞書を引いた結果は DLL に別関数を用意して一文字ずつ数値で受け取る
・変換モジュールで解決(できるかできないか不明、未調査)

結果を受け取っても Unicode だと扱いに困るかもしれないので
バルーンか何かで結果は出す、という風に割り切ってもよいかな
と思っています。

[ ]
RE:06049 dllfuncに受け渡しする文字列のNo.06050
秀丸担当 さん 09/02/20 10:42
 

>dllfunc で文字列を DLL に渡す際には
>Shift_JIS(CP932)で渡しているのでしょうか。

調べてみたら、秀丸エディタの場合はそのようになっていました。
秀丸メールの場合はV4.59から特殊な独自コードが混じったものを渡すようにな
っていました。

>・unicode() 関数を使用して一文字ずつ DLL に数値で渡す
>・辞書を引いた結果は DLL に別関数を用意して一文字ずつ数値で受け取る
>・変換モジュールで解決(できるかできないか不明、未調査)

とりあえずの回避策としては、このいずれの方法でもできるのではないかと思い
ます。
変換モジュールはUnicodeで渡すようになっています。

本来であれば、dllfuncにはワイド文字で渡すバージョンもあったほうがいいか
もしれないですが。

[ ]