アカウントとアドレス帳グループ関連づけNo.34259
ike さん 08/06/17 22:36
 
 上級者向け設定の「このアカウントとアドレス帳・グループを関連づける」がうま
く動作せず困っています。よろしくお願いいたします。

 仕事上、誤送信を防ぐために、アドレス帳をグループで分けています。そして、送
信用メールの宛先部分でのオートコンプリートの検索範囲もここで指定したアドレス
帳グループ配下に限定します。これは便利な機能です。
 ところが、このオプションをONにしてグループを指定すると(OFFだとアドレス帳
全体から検索して補完)、全く補完が効かなくなります。何らかの拍子に正しく動く
ときがあるのですが、なぜだかよくわかりません。

 使用している版数は下記のとおりです。5.05でも同じだった..かな。
 Version 5.06beta17
 持ち出しキット1.06

 参考までに、持ち出しキットで作成されたHmMail.iniでは、
   colExtra=-1 関連付けなし
   colExtra=10 関連付けあり
と、一見関係ないような名前のところだけが変わっていました。

[ ]
RE:34259 アカウントとアドレス帳グループNo.34260
秀まるお2 さん 08/06/18 11:01
 
 ソースコードの見直しおよびテストなどしてみたんですが、アドレス帳グルー
プの関連づけとオートコンプリート関係の処理で特におかしいと思うような所は
ありませんでした。

 うまくいかないならうまくいかないでずっと安定してるなら分かるんですが、
うまくいったりいかなかったり不安定っていうのもまたよく分かりません。

 とりあえず次のβ版に、この辺の情報をdump.txtに出力するように直してみま
す。それでログを取って欲しいです。

 「全般的な設定・上級者向け・動作の記録」の「秀丸メールの動作をdump.txt
に出力する」をONにして、さらに、「全般的な設定・上級者向け・デバッグ」の
「デバッグレベル」を4にしてテストして欲しいです。

AutoComplete GroupTarget=XXXX
DoBookGrep XXXXX

 みたいな記録が出ると思うので、その辺の記録の、うまくいく場合とうまくい
かない場合の両方を取っていただけるとうれしいです。うまくかない場合だけで
もいいですけど。

 次のβ版(V5.06β18)は今日中にアップロードします。

 アドレス帳グループの関連づけはアカウント毎の設定であって、account.bin
ファイルに保存されるだけの設定です。なので、HmMain.iniまたはレジストリを
書き換えることは無いはずです。

 colExtraというのは、「全般的な設定・メール一覧」の「メール一覧への表示
項目、並び順」の「特定ヘッダの内容/メール本文」の設定で、それがOFFの場
合は-1となり、ONの場合はその列の幅を保存するような仕組みになってるはずで
す。ただし、-1じゃない値が入っていたとしても、szExtraColという値が空っぽ
の場合はその値を無視する(-1と同じ扱いにする)ようではあります。

[ ]
RE:34260 アカウントとアドレス帳グループNo.34263
秀まるお2 さん 08/06/18 14:40
 
 今アップロードしまた。

http://www.hidemaru.interlink.or.jp/software/bin2/hmmail506b18_signed.exe

 ちなみにこんなログが出ます。(成功したケース)

14:08:54.804 (3314) tid=1188 AutoComplete Account=斉藤秀夫メイン GroupTarget
=Group(/キャンプ)
14:08:54.804 (3326) tid=1188 will DoBookGrep
14:08:54.804 (10793) tid=1188 DoBookGrep "yam", 1, 0, Group(/キャンプ)
14:08:54.804 (10961) tid=1188 cTarget=8 cMatch=3
14:08:54.804 (3331) tid=1188 DoBookGrep found
14:08:54.804 (4696) tid=1188 tkinfo 145
14:08:54.804 (4696) tid=1188 tkinfo 145
14:08:54.804 (4696) tid=1188 tkinfo 145

 cTarget=XXX ってのが、検索対象となったアドレス帳メンバーの数で、cMatch
=ってのがヒットした数ってことになります。上記例だと3つヒットしてますけ
ど。

[ ]
RE:34263 アカウントとアドレス帳グループNo.34265
ike さん 08/06/18 22:03
 
ご対応ありがとうございます。
beta18を入れてみましたが、今は正常に動いています。
再現したら報告します。
(仕事の関係で夜遅くにしか報告できませんがご容赦ください)

[ ]
RE:34265 アカウントとアドレス帳グループNo.34271
ike さん 08/06/19 20:55
 
補完がうまくいかないことが再現しましたので報告します。

アドレス帳の構造は下記のとおりです。

アドレス帳    0人
├myCompany 213人
├outside    24人
└obsolete  180人

以下はdump.txtの抜粋です。myCompanyのdaで始まる人をToフィールドで補完させよ
うとしたときのものです。(アカウントやグループ名は適当に変えてあります。)

補完ONのとき、候補が出ませんでした。
14:03:12.240 (18421) tid=808 HmCreate
14:03:12.240 (   0) tid=808 call WinMainSub
14:03:14.243 (   0) tid=808 FrameWndProc: WM_CREATE
14:03:14.259 (   0) tid=808 ClientWndProc: WM_CREATE
14:03:14.259 (   0) tid=808 return WinMainSub
14:03:14.259 (18425) tid=808 HmCreate return
14:03:14.259 (7607) tid=808 InitOuterHidemaru
14:03:14.572 (11867) tid=808 SetForegroundTopWindow 000403DC
14:03:14.572 (18680) CreateThreadAndViewFrame: waiting hevent OK
14:03:14.587 (18769) CreateThreadAndViewFrame() normal exit
14:03:14.587 (11867) SetForegroundTopWindow 000403DC
14:03:14.587 (13213) 40001 ret 1
14:03:15.698 ( 294) tid=808 HM:ShowCursor(0)
14:03:15.714 (  68) tid=808 fUpdated = TRUE
14:03:16.465 (3314) tid=808 AutoComplete Account=myName@office GroupTarget=G
roup(/myCompany)
14:03:16.465 (3326) tid=808 will DoBookGrep
14:03:16.465 (10793) tid=808 DoBookGrep "da", 1, 1, Group(/myCompany)
14:03:16.465 (10961) tid=808 cTarget=0 cMatch=0
14:03:17.968 ( 338) tid=808 HM:ShowCursor(1)
14:03:35.261 (13845) tid=808 ProcessFrameClose()
14:03:35.261 (9485) tid=808 DialogBox2Param() template=249
14:03:35.261 (20849) tid=808 MessageBeep2
14:03:35.261 (20849) tid=808 MessageBeep2
14:03:36.263 (9519) tid=808 DialogBox2Param() exit
14:03:36.263 (8954) tid=808 DestroyWindowします

補完OFFのとき、候補が出ましたが、もちろん、outsideやobsoleteの人も含まれて出
ています。
14:11:38.574 (18421) tid=4032 HmCreate
14:11:38.574 (   0) tid=4032 call WinMainSub
14:11:40.574 (   0) tid=4032 FrameWndProc: WM_CREATE
14:11:40.590 (   0) tid=4032 ClientWndProc: WM_CREATE
14:11:40.590 (   0) tid=4032 return WinMainSub
14:11:40.590 (18425) tid=4032 HmCreate return
14:11:40.590 (7607) tid=4032 InitOuterHidemaru
14:11:40.683 (11867) tid=4032 SetForegroundTopWindow 000803FE
14:11:40.683 (18680) CreateThreadAndViewFrame: waiting hevent OK
14:11:40.699 (18769) CreateThreadAndViewFrame() normal exit
14:11:40.715 (11867) SetForegroundTopWindow 000803FE
14:11:40.715 (13213) 40001 ret 1
14:11:41.871 ( 294) tid=4032 HM:ShowCursor(0)
14:11:41.871 (  68) tid=4032 fUpdated = TRUE
14:11:42.574 (3326) tid=4032 will DoBookGrep
14:11:42.574 (10793) tid=4032 DoBookGrep "da", 1, 1
14:11:42.574 (10961) tid=4032 cTarget=417 cMatch=3
14:11:42.574 (3331) tid=4032 DoBookGrep found
14:11:42.574 (4696) tid=4032 tkinfo 145
14:11:42.574 (4696) tid=4032 tkinfo 145
14:11:42.574 (4696) tid=4032 tkinfo 145
14:11:42.590 ( 338) tid=4032 HM:ShowCursor(1)
14:11:46.185 (13845) tid=4032 ProcessFrameClose()
14:11:46.185 (9485) tid=4032 DialogBox2Param() template=249
14:11:46.200 (20849) tid=4032 MessageBeep2
14:11:46.200 (20849) tid=4032 MessageBeep2
14:11:47.575 (9519) tid=4032 DialogBox2Param() exit
14:11:47.575 (8954) tid=4032 DestroyWindowします

[ ]
RE:34271 アカウントとアドレス帳グループNo.34272
秀まるお2 さん 08/06/19 22:00
 
 Account=もGroupTarget=も正しくて、DoBookGrep関数呼び出しのパラメータも
そのまんまなのに、cTarget=が0になってしまうということですかね。

 ちなみに普段うまくいくときはcTargetが0じゃなくて適当な数になってるって
ことですよねぇ。(グループ名はまったく同じで)

 という前提で、なぜそうなるのか考えてみます。

 どうしても分からなければ、またログ出力追加って作戦になるかもしれません
けど…

[ ]
RE:34272 アカウントとアドレス帳グループNo.34280
秀まるお2 さん 08/06/20 12:04
 
 1つバグを見つけました。グループ名の中にコンマがあるとダメなようです。

 ただし、この場合、常にダメであって、うまくいったりいかなかったりという
動作にはならないです。

 もっと調べてみます。

[ ]
RE:34280 アカウントとアドレス帳グループNo.34282
ike さん 08/06/20 21:27
 
エディタではなくてアドレス帳に関連しそうな感じがしたので、調べてみました。
アドレス帳のバックアップ(AdrBook.bkn)が残っていたので、正常に動いていたと思
われるころのと、うまく補完されなくなったころのを比較したところ、先頭行が異な
っていました。

うまくいっていたころ
G1 myCompany

補完されなくなったころ
G1 myCompany[Tab]0
            ^^^^^^
            ここが異なります。

ためしに、秀丸エディタでAdrBook.txtを開き、 0を消したところ、正常に補完され
ました。
dump.txtを記します。最初、 0を消して正常に補完され、一旦終了した後、[Tab]0を
復活させたら補完が効かなくなったときのものです。

[Tab]0を消したら正常に補完された
14:09:34.662 (18421) tid=2168 HmCreate
14:09:34.662 (   0) tid=2168 call WinMainSub
14:09:36.662 (   0) tid=2168 FrameWndProc: WM_CREATE
14:09:36.662 (   0) tid=2168 ClientWndProc: WM_CREATE
14:09:36.678 (   0) tid=2168 return WinMainSub
14:09:36.678 (18425) tid=2168 HmCreate return
14:09:36.678 (7607) tid=2168 InitOuterHidemaru
14:09:36.756 (11867) tid=2168 SetForegroundTopWindow 0009045A
14:09:36.771 (18680) CreateThreadAndViewFrame: waiting hevent OK
14:09:36.787 (18769) CreateThreadAndViewFrame() normal exit
14:09:36.787 (11867) SetForegroundTopWindow 0009045A
14:09:36.787 (13213) 40001 ret 1
14:09:38.475 ( 294) tid=2168 HM:ShowCursor(0)
14:09:38.475 (  68) tid=2168 fUpdated = TRUE
14:09:39.178 (3314) tid=2168 AutoComplete Account=myName@office GroupTarget=
Group(/myCompany)
14:09:39.178 (3326) tid=2168 will DoBookGrep
14:09:39.178 (10793) tid=2168 DoBookGrep "da", 1, 1, Group(/myCompany)
14:09:39.178 (10961) tid=2168 cTarget=213 cMatch=2
14:09:39.178 (3331) tid=2168 DoBookGrep found
14:09:39.178 (4696) tid=2168 tkinfo 145
14:09:39.178 (4696) tid=2168 tkinfo 145
14:09:39.194 ( 338) tid=2168 HM:ShowCursor(1)
14:09:42.100 (13845) tid=2168 ProcessFrameClose()
14:09:42.100 (9485) tid=2168 DialogBox2Param() template=249
14:09:42.116 (20849) tid=2168 MessageBeep2
14:09:42.116 (20849) tid=2168 MessageBeep2
14:09:43.006 (9519) tid=2168 DialogBox2Param() exit
14:09:43.006 (8954) tid=2168 DestroyWindowします

[Tab]0を復活させたら補完されなくなった。
14:09:59.461 (18421) tid=3756 HmCreate
14:09:59.461 (   0) tid=3756 call WinMainSub
14:10:01.461 (   0) tid=3756 FrameWndProc: WM_CREATE
14:10:01.461 (   0) tid=3756 ClientWndProc: WM_CREATE
14:10:01.477 (   0) tid=3756 return WinMainSub
14:10:01.477 (18425) tid=3756 HmCreate return
14:10:01.477 (7607) tid=3756 InitOuterHidemaru
14:10:01.571 (11867) tid=3756 SetForegroundTopWindow 001604EE
14:10:01.571 (18680) CreateThreadAndViewFrame: waiting hevent OK
14:10:01.586 (18769) CreateThreadAndViewFrame() normal exit
14:10:01.602 (11867) SetForegroundTopWindow 001604EE
14:10:01.602 (13213) 40001 ret 1
14:10:03.149 ( 294) tid=3756 HM:ShowCursor(0)
14:10:03.165 (  68) tid=3756 fUpdated = TRUE
14:10:03.837 (3314) tid=3756 AutoComplete Account=myName@office GroupTarget=
Group(/myCompany)
14:10:03.837 (3326) tid=3756 will DoBookGrep
14:10:03.837 (10793) tid=3756 DoBookGrep "da", 1, 1, Group(/myCompany)
14:10:03.837 (10961) tid=3756 cTarget=0 cMatch=0
14:10:06.040 ( 338) tid=3756 HM:ShowCursor(1)
14:10:07.306 (13845) tid=3756 ProcessFrameClose()
14:10:07.321 (9485) tid=3756 DialogBox2Param() template=249
14:10:07.321 (20849) tid=3756 MessageBeep2
14:10:07.321 (20849) tid=3756 MessageBeep2
14:10:08.087 (9519) tid=3756 DialogBox2Param() exit
14:10:08.087 (8954) tid=3756 DestroyWindowします


補完が効かなくなったころにはアドレス帳を整理したり、ソートをしたりした記憶が
あります。アドレス帳画面からの操作だけで、AdrBook.txtを直接エディットしたり
はしていません。

以上、ヒントになれば幸いです。

[ ]
RE:34282 アカウントとアドレス帳グループNo.34285
秀まるお2 さん 08/06/21 19:44
 
 うまくいかない理由がやっと分かりました。ということで直せると思います。

 ちなみにグループ名の後ろにタブと数字が付くのは、アドレス帳グループ内で
メンバーをソートしたことを覚えておくためだったと思います。

 とにかく次のβ版で修正させていただきます。

[ ]