履歴ファイルに関するマクロNo.00591
番頭++ さん 99/05/22 15:34
 
履歴ファイルに関するマクロの残骸があったので、
少し説明をいれて、多少、エラー処理を追加してみました。これが疲れる ...
自分で、びしばし、使用した記憶が無いので、
たぶん (会社の) 誰かの要望で作成したのでしょう。
grep "履歴" ... 、で検索できなくて、
grep "99", ... 、で検索できたゴミマクロです。
.01 - .99 を付加した名前を使用しているので、
Windows 95 の時代に作成したんだと思います。
元のマクロの名前が x301.mac だったので、いいかげんなマクロです。

Copyright とかも気にする必要は、当然ありませんマクロです。
単なるマクロのサンプルです。参考になれば幸いです ...

このマクロの動作に関する質問は無いということで ...
文章を書くより、マクロを書くほうが楽なんです ...

//*1 *** Macro for 「秀丸エディタ」 ***
//*1 【マクロ名】 KZ_Save_00A.mac - Ver. xx.xx - 1999/05/22 - 本日の名前です ...
//*1 【作者】 投稿者
//*1 【機能】
//*1 ・現在編集中のファイル内容を処理の対象とした、履歴ファイルの処理です。
//*1 ・履歴ファイルとして保存、前回の内容を戻す、削除の処理です。
//* S. 現在編集中のファイルを、拡張子 .01 - .nn - .99 を付加して保存します。
//* R. 前回 (最後) の履歴ファイル内容を、現在編集中のファイルに戻します。
//* D. 履歴ファイルを、すべて削除します。少し処理時間がかかります。
//*    - この削除処理には、「秀丸マクロサーバ」が必要です。
//*1 【注意】
// ・該当する .nn の履歴ファイルが開かれている場合にはその内容を処理します。
// ・ファイル内容の転送は ClipBoard 経由で行っています。
// ・マクロの終了時に、 ClipBoard をクリアしています。
// ・このマクロの仕様は予告無く変更されます。

//*1 【カスタマイズ】
//* 99, 999 (少し遅い) でもいけますが、9999 の考慮はありません !!!
//* 次のコードを、一度でも変更したら、戻さないでください !!!
    #max_nn = 99;
//* #max_nn = 999;  //  (少し遅い)

    $file_name1 = filename2;
    escape; #x = x; #y = y;
    call pp_00_next1;
    $tbl_menu1[00] = filename2;
    $tbl_menu1[01] = "(&S) ." + $wk1 + " - として保存";
    $tbl_menu1[02] = "(&R) ." + $wk2 + " - に戻す  \t[Shift]";
    $tbl_menu1[03] = "(&D) .nn" + " - をすべて削除 \t[Ctrl]";
//R $tbl_menu1[04] = "";
    #tbl_menu1 = 03 + 1;
    if( val($wk2) == 00 ){
        #tbl_menu1 = 02;
    }
    menuarray $tbl_menu1, #tbl_menu1;
    #menu1 = result - 1;
    #sw_shift = iskeydown(0x10);    //  [Shift]
    #sw_ctrl =  iskeydown(0x11);    //  [Ctrl]
    if( #menu1 < 00 ){
        endmacro;
    } else if( #menu1 == 00 ){
        endmacro;
    } else if( #menu1 == 01 ){
        call pp_save1;
    } else if( #menu1 == 02 ){
        if( val($wk2) == 00 ){  endmacro;   }
        if( ! #sw_shift ){
            message "Press [Shift] Key !!!";
            endmacro;
        }
        call pp_reverse1;
    } else if( #menu1 == 03 ){
        if( ! #sw_ctrl ){
            message "Press [Ctrl] Key !!!";
            endmacro;
        }
        question "Delete All - .nn - ?";
        if( ! result ){ endmacro;   }
        call pp_00_delete1;
        beep;
        endmacro;
    } else{
        endmacro;
    }
    setclipboard "";
    escape; moveto 0, #y;   //  #x, #y;
    enableinvert;   enabledraw; title 0;
endmacro;

pp_save1:
    $wk3 = filename2 + "." + $wk1;
    title $wk3;
    disabledraw;    disableinvert;
    selectall;  copy;
    escape; moveto #x, #y;  
    call pp_00_open1;
    selectall;  delete; paste;  gofiletop;
    saveas $wk3;
    if( ! result ){ message "saveas - failed !";    endmacroall;    }
    setactivehidemaru hidemaruhandle(findhidemaru($file_name1));
    call pp_00_close1;
return;

pp_reverse1:
    $wk3 = filename2 + "." + $wk2;
    title $wk3;
    disabledraw;    disableinvert;
//R selectall;  copy;   selectall;  delete;
    selectall;  cut;
    call pp_00_open1;
    selectall;  copy;
    setactivehidemaru hidemaruhandle(findhidemaru($file_name1));
    disabledraw;    disableinvert;
    paste;
    call pp_00_close1;
    save;   //  必要ないかも !!!
    if( ! result ){ message "save - failed !";  endmacroall;    }
return;

pp_00_open1:
    #file_wh2 = findhidemaru($wk3);
    if ( #file_wh2 == - 1){
        openfile "/h " + $wk3;
    } else {
        setactivehidemaru hidemaruhandle(findhidemaru($wk3));
        enableinvert;   enabledraw;
    }
return;

pp_00_close1:
    if ( #file_wh2 == - 1){
        closehidemaru hidemaruhandle(findhidemaru($wk3));
    } else {
//R     closehidemaru hidemaruhandle(findhidemaru($wk3));
    }
return;

pp_00_next1:
    #i = #max_nn;
    #j = strlen(str(#max_nn));
    $zero = "0000";
    while( #i ){
        $wk1 = rightstr($zero+str(#i),#j);
        if( ! existfile(filename2+"."+leftstr($wk1,1)+"*") ){
            //  message filename2+"."+leftstr($wk1,1)+"*";
                #i = #i - val(leftstr("1"+$zero,#j));
                if( #i <= 0 ){
                    #i = 0; break;
                }
        } else {
        //  $wk1 = rightstr($zero+str(#i),#j);
            if( existfile(filename2+"."+$wk1) ){
                break;
            }
            #i = #i - 1;
        }
    }
    if( #i == #max_nn ){
        message "Over Max. - .nn - " + str(#max_nn) + " !!!";
        endmacro;
    }
    $wk1 = rightstr($zero+str(#i+1),#j);
    $wk2 = rightstr($zero+str(#i),#j);
return;

pp_00_delete1:
    if( ! existfile(hidemarudir+"\\macserv.exe") ){
        message "「秀丸マクロサーバ」 macserv.exe が必要です !!!";
        endmacroall;
    }
    run "macserv.exe";
    ddeinitiate "HideMacroServer", "FileService";
    if( !result ) {
        message "DDE initiate failed !";
        endmacro;
    }
    #i = #max_nn;
    #j = strlen(str(#max_nn));
    $zero = "0000";
    #k = 0;
    #d = 00;
    while( existfile(filename2+".*") ){
        $wk1 = rightstr($zero+str(#d),#j);
        if( existfile(filename2+"."+$wk1) ){
            ddeexecute "delete " + filename2 + "." + $wk1;
            #k = #k + 1;
        }
        #d = #d + 1;
    }
//R message "Deleted All ! \n- .nn - " + str(#k);
    ddeexecute "exit";
return;

endmacroall;
// end of macro.

[ ]
RE:00591 履歴ファイルに関するマクロNo.00595
にひら さん 99/05/25 13:19
 
番頭++さん、こんにちは。
読みでがありそうなマクロですねっ。
勉強させていただきます。
どうもありがとうございましたm(__)m

[ ]