1539 への返信

マクロの文字コードについて 他R.F.D. - No.1539
こんにちは。
マクロの挙動について確認させてください。手元のバージョンは、Win版2.30です。


【1】lmfファイルの文字コード
lmfファイルの先頭にエンコードを示すフラグが追記されましたが、
 1 [\t] Encoding=UTF-8
に完全一致する場合のみUTF-8と認識され、
それ以外はShift_JISということになるのでしょうか。

また、Shift_JISベースのlmfファイルを読み込んだとき、
自動的にUTF-8にコンバートしない方法はあるのでしょうか?
(ファイルの属性、パーミッションを弄れば行けると思いますが)


【2】マクロDLLの引数/戻り値の文字コード
*.lmfがUTF-8の場合、
DllStringへの引数はUTF-8からShift_JISに変換してから渡され、
戻り値はShift_JISで受け取ったものをUTF-8に変換されますよね?

せっかくLimeChatがUTF-8なんだから、
DLL内でもUTF-8で処理したいのですが、これは可能でしょうか?


【3】マクロDLLの関数名
バージョン2.16の時の更新内容に
 >マクロから dll を呼び出す時に関数が見つからない場合、
 >頭にアンダーバーがついた名前で関数を探すようにした。
とありますが、これは特定の開発環境(たぶんgcc)への対策でしょうか?

Psychs - No.1541
> 【1】lmfファイルの文字コード
>lmfファイルの先頭にエンコードを示すフラグが追記されましたが、
> 1 [\t] Encoding=UTF-8
>に完全一致する場合のみUTF-8と認識され、
>それ以外はShift_JISということになるのでしょうか。

はい。その通りの仕様です。

>また、Shift_JISベースのlmfファイルを読み込んだとき、
>自動的にUTF-8にコンバートしない方法はあるのでしょうか?
>(ファイルの属性、パーミッションを弄れば行けると思いますが)

いまのところ用意していません。
ファイルの属性で read only にしてしまうというのは一つの手段だと思います。

>【2】マクロDLLの引数/戻り値の文字コード
>*.lmfがUTF-8の場合、
>DllStringへの引数はUTF-8からShift_JISに変換してから渡され、
>戻り値はShift_JISで受け取ったものをUTF-8に変換されますよね?
>せっかくLimeChatがUTF-8なんだから、
>DLL内でもUTF-8で処理したいのですが、これは可能でしょうか?

ANSI版との互換性を維持するためにそのような仕様にしました。
今のところ、DLL に UTF-8 で文字列を渡すことは考えていません。
UTF-8 で扱いたい場合には、スクリプトで処理してくださいという姿勢です。

>【3】マクロDLLの関数名
>バージョン2.16の時の更新内容に
> >マクロから dll を呼び出す時に関数が見つからない場合、
> >頭にアンダーバーがついた名前で関数を探すようにした。
>とありますが、これは特定の開発環境(たぶんgcc)への対策でしょうか?

この workaround は、bcc 対策で入れました。
もともと、LimeChat 1 のときにDLL関数の呼び出し規約を stdcall ではなく、
cdecl にしてしまった仕様バグの影響が残っています。
R.F.D. - No.1543
ありがとうございました。
参考にさせていただきます。

以下の項目を必ず守ってください。守っていない書き込みは無視されるかも知れません。

あなたにとっては1回の質問でも、答える側は1回ではないことを理解してください。

  • 文章はきちんと状況が伝わるように丁寧に書いてください。
  • 話し言葉での書き込みは禁止します。
  • 過去ログを検索して確認してから書き込んでください。
  • 内容がわかるタイトルをつけること。要望する場合は[要望]を先頭につけること。
  • 動作確認はかならず最新版で行ってください。
  • 不適切な文章は、管理人が削除、編集することがあります。
名前*
メッセージ*
パスワード (編集・削除に使用。16文字以内)