closehidemaru に関してNo.05109
番頭++ さん 00/02/25 12:58
 
V 3.04 にして、closehidemaru の result が false になる確率が増えました。
V 3.05 でも同じ傾向があります。

ひとつのファイルを加工して複数のファイルを新規作成するマクロがあります。
そのコードの一部ですが、"ERROR - closehidemaru failed !!! " になります。
false は正しいんです。実際に「窓」は生きています。閉じられてはいません。

    openfile "/h " + $wk_save;
    selectall;  delete; paste;
    saveas $wk_save;
    if( ! result ){
        message "ERROR - saveas failed !!! \n\n" + $wk_save;
        endmacroall;
    }
    setactivehidemaru hidemaruhandle(findhidemaru($file_self1));
    closehidemaru hidemaruhandle(findhidemaru($wk_save));
    if( ! result ){ // <== です。
        message "ERROR - closehidemaru failed !!! \n\n" + $wk_save; // <==
です。
        endmacroall;
    }

V 3.02 までは、ほとんど正常でした。

番頭++ の想像ですが、closehidemaru って昔から result を false になるケー
スがありました。その場合、次のようなコードを足すと、不思議と安定しました。
なんの根拠もないコードです。V 2.xx からのあちきの癖です。定説ではありません。

    closehidemaru hidemaruhandle(findhidemaru($wk_save));
    #act_1 = -99;   //  bug ???             // <== 追加、根拠はない !!!
    while( #act_1 != -1 ){                  // <== 追加、根拠はない !!!
        #act_1 = findhidemaru($wk_save);    // <== 追加、根拠はない !!!
    }                                       // <== 追加、根拠はない !!!

または、closehidemaruforced にしました。

現在 (3.04, 3.05) では、起きるときには起きる、起きないときには起きない問題で
す。

異なるマザーボード、P III 600E FC-PGA (720 で動作) 、K6-233、Windows 95
OSR 2 、98 SE 、に関係なく、問題が起きる確率はかなり上がりました。
Windows がハングして、ハードの Reset ボタンを押した場合もありました。

だれが悪いのか、相性(ハード、ソフト)とかは丸で不明です。ただ「秀丸」を V
3.02 にすると安定します。以前、「 grep 後のファイルを修正して、もとのフ
ァイルに更新を反映するマクロが不安定 ... 」みたいな投稿がありましたよね ...

V 3.05 では closehidemaru に関連するコード (C) の何かが変わったのでしょうか ???


[ ]
RE:05109 closehidemaru に関してNo.05110
ENCODINGSHIFTJIS さん 00/02/25 16:55
 
V3.01 では openfile で面はできるがマクロ実行権がちゃんと
work の方に移行してない現象のほうがでました。
このマクロの場合 元の面が名称変更されて残ります。
/h 面と元の面が同名になるので /h のほうが負けて消えます。

[ ]
RE:05109 closehidemaru に関してNo.05112
番頭++ さん 00/02/25 17:13
 
>V 3.02 までは、ほとんど正常でした。

V 3.01 の間違いです。

確認のために次のようにすると、不思議と安定します。

    #k1 = hidemaruhandle(findhidemaru($file_self1));
    setactivehidemaru hidemaruhandle(findhidemaru($file_self1));
    #k2 = hidemaruhandle(findhidemaru($wk_save));
    closehidemaru hidemaruhandle(findhidemaru($wk_save));
    if( ! result ){
        message "ERROR - closehidemaru failed !!! \n\n" + $wk_save + ", " +
str(#k1) + ", "+ str(#k1) ;
        endmacroall;
    }

でも完璧にはなりませんです。不思議だな ???





[ ]
RE:05109 closehidemaru に関してNo.05118
秀丸担当 さん 00/02/25 17:57
 
>V 3.04 にして、closehidemaru の result が false になる確率が増えました。
>V 3.05 でも同じ傾向があります。
>
>ひとつのファイルを加工して複数のファイルを新規作成するマクロがあります。
>そのコードの一部ですが、"ERROR - closehidemaru failed !!! " になります。
>false は正しいんです。実際に「窓」は生きています。閉じられてはいません。

やってみたところ、連続してマクロを実行していると、
"ERROR - closehidemaru failed !!! "になることがありました。
でも、秀丸は既に閉じられていて、closeするものが無いためにエラーに
なっているように見えます。
V3.01でも同様に発生し、V2.29では少し起きにくいですが発生しました。

これが今回の不安定になったという話と同じなのか、どうもわかりません。
どのみち、もっと安定できるように改善する必要がありそうです。

V3.02以降の変更では、秀丸管理で、ウィンドウハンドルが、「-1以外の
負の数」であっても、ウィンドウハンドルとして認めるように変更してい
ます。今までは負の数だったらウィンドウハンドルとして認めていません
でした。
不安定になったという報告があったときにもそのあたりを調べてみたので
すが、まだ原因は分かっていません。





[ ]
RE:05118 closehidemaru に関してNo.05167
番頭++ さん 00/02/29 12:46
 
>"ERROR - closehidemaru failed !!! "になることがありました。
>でも、秀丸は既に閉じられていて、closeするものが無いためにエラーに
>なっているように見えます。

うちでは close されていません。

とりあえず RE:5112 のように回避しますが ...

不安定の原因は setactivehidemaru が完了しないうちに、
closehidemaru が実行されるているようにも見えますが ???


[ ]
RE:05167 closehidemaru に関してNo.05182
秀丸担当 さん 00/02/29 19:01
 
>うちでは close されていません。
>
>とりあえず RE:5112 のように回避しますが ...
>
>不安定の原因は setactivehidemaru が完了しないうちに、
>closehidemaru が実行されるているようにも見えますが ???

そうですか。
どうも不安定なのは昔からある仕組みが問題と思うので、
仕組みを変えるか、検討します。

[ ]