DLL/COMからの文字数計算の方法についてNo.09699
fzok4234 さん 21/12/13 08:58
 
おはようございます。

さて、現在開いている文字数の計算についてですが、マクロから呼び出すDLLやCOM上
で正確な文字数計算を
64bit整数で行いたいのですがどのようにすればよいのでしょうか ?

現状では、エディタ本体の「文字数」ダイアログでは正しく64bit整数として算出で
きる一方で、マクロの
charcount()では32bit幅の0x000000007FFFFFFFを超える文字数は算出できません。し
たがって、DLL/COM上で
マクロのcharcount()をHidemaru_EvalMacro()関数やそのラッパー( hm.NET.dllのHm.
Macro.Function()など )で
そのまま呼び出すわけにはいきません。


[ ]
RE:09699 DLL/COMからの文字数計算の方法No.09700
秀丸担当 さん 21/12/13 14:44
 
charcountは、0x7FFFFFFFを超える文字数はできないようにしてあります。
すみません。
超えることも考慮したものを作る場合、getresultex(23)で超えたかどうかを判断し
て、何らかのエラー処理に導くといったことになると思います。

[ ]
RE:09700 DLL/COMからの文字数計算の方法No.09701
fzok4234 さん 21/12/13 15:26
 
回答ありがとうございます。

> 超えることも考慮したものを作る場合、getresultex(23)で超えたかどうかを判断
>して、
> 何らかのエラー処理に導くといったことになると思います。

確かに、文字数が0x7FFFFFFFを超えているか否かの「Boolean値」だけが欲しいなら
このような
運用方法でもよかろうと思います。

しかし、当方で欲しい情報はあくまでカーソル移動単位なども考慮した「文字数」そ
のもので
あります。もし現状で取得が不可能ならば、DLL側からの秀丸エディタの関数呼び出しに
  int64_t WINAPI Hidemaru_CharCount( int32_t n1 ) ;
というような確実に64bit整数で「文字数計算」する関数を新設することも検討して
いただければ
幸いです。

どうかよろしくお願いします。



[ ]
RE:09701 DLL/COMからの文字数計算の方法No.09702
秀丸担当 さん 21/12/14 09:14
 
charcountもそうですが、そこまで大きいサイズの場合はほぼ応答なし状態になって
しまうと思いますが、そういう関数もあったらいいということで、ご意見参考にさせ
ていただきます。

[ ]