鶴亀本体でのメール編集時の問題No.08769
たまがわ さん 03/05/04 09:45
 
 マクロを使って、鶴亀本体でメール編集を行う場合に関して、ちょっと気になった
点を2点報告します。

(1)メールの編集主体を、メールエディタから鶴亀本体に移行させるときに、以下
のエラーが出るときがあります。

ファイルが他で使用中のため、処理が続行できません。
ファイル名 = D:\TuruKameData\(以下省略)
発生場所 = E:\Usr95\TuruKame\FileMan.cpp(3769)

 私の環境では、以下のようなテスト用マクロを走らせると、何回目かのループでこ
のエラーが必ず出現します。(マクロは、適当なところで、ESCキーで止めてくださ
い)

loaddll "tkinfo.dll";
while (1) {
    #n = dllfunc("NewMail");
    #handle = hidemaruhandle(0);
    #n = dllfunc("SaveDraft");
    #n = dllfunc("Sync");
    #n = dllfunc("SetMainWndTop");
    closehidemaruforced #handle;
    #n = dllfunc("BeginEditMail");
    if (dllfunc("IsOrikaeshi")) #n = dllfunc("SwitchOrikaeshi");
    if (readonly) readonlyswitch;
    if (overwrite) overwriteswitch;
}
endmacro;

(2)本体での編集時に文字をinsertできないことがあります。
 鶴亀本体を3枠区切りにして、ヘッダ表示を「簡略」か「全て」にしてから、適当
なメールを選択して以下のマクロを走らせると、文字がうまく挿入できない様子が観
察できます。
 SwitchHeaderViewをBeginEditの前に置けば問題は生じないので、この相互関係が
影響しているようです。

loaddll "tkinfo.dll";
#n = dllfunc("BeginEditMail");
if (dllfunc("IsOrikaeshi")) #n = dllfunc("SwitchOrikaeshi");
if (readonly) readonlyswitch;
if (overwrite) overwriteswitch;
#HeaderView = dllfunc("HeaderView");
#n = dllfunc("SwitchHeaderView", 0);
selectall; delete;
insert "test\n"; //この文字が入らない
endmacro;

(Win XP pro sp1、鶴亀2.74)

[ ]
RE:08769 鶴亀本体でのメール編集時の問題No.08770
たまがわ さん 03/05/04 10:11
 
>ファイルが他で使用中のため、処理が続行できません。
>ファイル名 = D:\TuruKameData\(以下省略)
>発生場所 = E:\Usr95\TuruKame\FileMan.cpp(3769)

 上記のファイル名のところは、

ファイル名 = D:\TuruKameData\(アカウント名)\草稿\草稿20030504_39.txt

というような感じです。
 D:\TuruKameDataは、ホームディレクトリです。

[ ]
RE:08770 鶴亀本体でのメール編集時の問題No.08772
秀まるお さん 03/05/05 22:45
 
 毎度お手数かけます。バグ再現しました。最近いじった所が関係してたバグで
した。

 エディタのウィンドウをDestroyWindowで終了しても、実際のメモリの解放は
WM_QUITが届いてからってことに修正したんですが、排他制御用のファイルハン
ドルの解放も、そのWM_QUITがGetMessageされるタイミングになってまして、そ
れが原因でおかしくなってました。DestroyWindowした時点でファイルハンドル
をCloseするように修正しました。

[ ]
RE:08772 鶴亀本体でのメール編集時の問題No.08778
たまがわ さん 03/05/06 19:06
 
>  毎度お手数かけます。バグ再現しました。最近いじった所が関係してたバグで
> した。
>
>  エディタのウィンドウをDestroyWindowで終了しても、実際のメモリの解放は
> WM_QUITが届いてからってことに修正したんですが、排他制御用のファイルハン
> ドルの解放も、そのWM_QUITがGetMessageされるタイミングになってまして、そ
> れが原因でおかしくなってました。DestroyWindowした時点でファイルハンドル
> をCloseするように修正しました。

 鶴亀2.75で確認したところ、(1)の方は修正されていますが、(2)の方は相変
わらずダメみたいです。
 こちらは別に原因があるみたいですね。

[ ]
RE:08778 鶴亀本体でのメール編集時の問題No.08784
秀まるお さん 03/05/07 09:58
 
 すみません。(2)側はまったく読んでませんでした。

 今から読んで調査させていただきます。

[ ]
RE:08778 鶴亀本体でのメール編集時の問題No.08785
秀まるお さん 03/05/07 10:05
 
 (2)の件ですが、たぶん苦労すれば対応できますが、修正必要箇所が予測困難
なので、仕様ということにして欲しいです。

 BeginEditMailしている最中にヘッダ表示の切り替えをすると、エディタが書
き換え出来ないモードに戻ってしまうようです。SwitchOrikaeshiもダメかもし
れないです。

 編集する前にBeginEditMailするよう修正すれば解決します。

loaddll "tkinfo.dll";
#HeaderView = dllfunc("HeaderView");
#n = dllfunc("SwitchHeaderView", 0);
if (dllfunc("IsOrikaeshi")) #n = dllfunc("SwitchOrikaeshi");
#n = dllfunc("BeginEditMail");
if (readonly) readonlyswitch;
if (overwrite) overwriteswitch;
selectall; delete;
insert "test\n"; //この文字が入らない
endmacro;

[ ]
RE:08785 鶴亀本体でのメール編集時の問題No.08787
たまがわ さん 03/05/07 10:53
 
秀まるおさん、こんにちは。

>  (2)の件ですが、たぶん苦労すれば対応できますが、修正必要箇所が予測困難
> なので、仕様ということにして欲しいです。
>
>  BeginEditMailしている最中にヘッダ表示の切り替えをすると、エディタが書
> き換え出来ないモードに戻ってしまうようです。SwitchOrikaeshiもダメかもし
> れないです。

 了解しました。BeginEditMail中は、SwitchHeaderView等を使わないように気を付
けることにします。(ヘルプには注記しておいた方が親切かも・・・?)

[ ]
RE:08787 鶴亀本体でのメール編集時の問題No.08788
秀まるお さん 03/05/07 11:09
 
 ヘルプは実は今直しました。

[ ]