[ 新規に投稿する ]

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もそうですが、そこまで大きいサイズの場合はほぼ応答なし状態になってしまうと思いますが、そういう関数もあったらいいということで、ご意見参考にさせていただきます。
[ ]

[ 新規に投稿する ]