kinzoku

  1. var oSC = new ActiveXObject("ScriptControl");
    oSC.Language = "VBScript";
    var sFunc = "Function Ascii(s)\n";
    sFunc += " Ascii=Asc(s)\n";
    sFunc += "End Function\n";
    oSC.AddCode( sFunc );
    function ascii(s){
    var r= oSC.Run("Ascii", s);
    return ( r & 0x0000FFFF );
    }
    function tab2space(text, tabwidth){
    var ret="";
    var nCode, sChar, w;
    var xview = 0;
    for( var i=0; i < text.length; i++ ){
    sChar = text.charAt(i);
    nCode = ascii( sChar ); // ここが mme 依存
    if( nCode & 0xFF00 ){
    xview += 2; ret += sChar;
    }else if( nCode == 0x09 ){
    w = tabwidth - (xview % tabwidth);
    xview += w;
    while( w > 0 ){ ret += " "; w--; }
    }else if( nCode == 0x0a ){
    xview = 0; ret += sChar;
    }else{
    xview++; ret += sChar;
    }
    }
    return ret;
    }
    // tabcolumns は、Mery のタブ幅の設定にあわせてなければならない。
    var tabcolumns = 8;
    var s = document.selection.Text;
    document.selection.Text = tab2space( s, tabcolumns );
    /*
    * 用途
    * 選択範囲のタブを、桁を崩さずスペースに変換。
    * ただし、手動で、tabcolumns を設定しなければならない・・・
    *
    * tabcolumns は 2,4,8 で有効
    * Mery の タブ設定の 6 は、行末付近にタブがあると、その場所は、余計な空白で
    * 埋められて、タブ自体は次行に送られてしまう場合がある。
    */

     |  tab->space 変換  |  返信
  2. 名前と件名の場所を間違えてしまった。w

    それはそうと、ユーザーの INI ファイルを読むメソッドが欲しいです。
    すくなくとも、INIファイルのフルパスの分かるプロパティが欲しい。

    [General]
    TabColumns=8

    これが読めるのに。

    だいたい、いまの Mery でいい感じになったので、
    ○丸マクロエミュレーターをうpしました。
    Maru Macro Emulator for Mery
    ttp://homepage3.nifty.com/kinzoku/editor/index.html

    これには、tospace(), totab() があるけど、
    Mery のタブ幅が、マクロから分からないので、引数で指定するようになっている。

     |  kinzoku  |  返信
  3. うは、すごい・・・。
    どうせならMery's Factoryにアップしてほしいw

    > それはそうと、ユーザーの INI ファイルを読むメソッドが欲しいです。
    > すくなくとも、INIファイルのフルパスの分かるプロパティが欲しい。

    VBScriptでユーザ名は取得できると思いますが、Mery本体のパスが取れないか・・・。
    スクリプト言語なので基本的には操作の短縮が目的、それ以上になるとプラグインで対応したいというスタンスです。でも、ユーザ側からすると簡単に作れるマクロから何でもできたほうが良いのかもしれませんね。。。

    > ○丸マクロエミュレーターをうpしました。

    早速、試させていただきましたw
    完成度高いですね。replaceallfast とかフツーに動いたので感動!
    JSの書き方に直していかなきゃならないですが、移植性はかなりあがりますね、これ。

    でも、○丸使ってる人って、Mery使わないんじゃ・・・w

     |  Kuro  |  返信
  4. >VBScriptでユーザ名は取得できると思いますが、Mery本体のパスが取れないか・・・。
    Mery 本体のパスだけなんとかお願いします。
    INI ファイルが読めれば、プロパティ追加の要望もなくなるし、
    マクロから出来ることが、一気に増えます。

    >対応したいというスタンスです。でも、ユーザ側からすると簡単に作れるマクロから
    >何でもできたほうが良いのかもしれませんね。。。
    個別的な処理について、書き捨てマクロがたくさん作られます。
    その蓄積で、汎用的な処理が見えてきます。それがプラグインになるんだと思います。

    >でも、○丸使ってる人って、Mery使わないんじゃ・・・w
    確かに。w
    ○丸で、JavaScript を頻繁に使う人に需要があるかも?

    次期 ○丸 v8 では、createobject など、COM関連のマクロが追加されます。
    しかし、サンプルを見て吹きました。これなら、Mery を使った方がイイ。

    エクセルのセル内容取得
    ● WSH(VBS)の場合
    Set objExcel = WScript.GetObject("c:\folder\test.xls")
    WScript.Echo objExcel.Sheets("Sheet1").Cells(1,1)

    ● ○丸の場合
    #objXls = getobject("C:\\folder\\test.xls");
    #objSheet = member(#objXls, "Sheets", "Sheet1" );
    #objCells = member( #objSheet, "Cells" );
    #objCell = member(#objCells,"Item", 1,1);
    message member( #objCell ); //デフォルトのプロパティ

     |  kinzoku  |  返信
  5. うぉー内容さっぱりわかねーけど導入しました。
    beta最新版でVistaでもばっちり動いてるっぽいっすね。

    報告までに、次は7か

    ちょっと○丸あさってこよっとw

     |  MOON  |  返信
  6. 最近作るものがないんでmme.wscのインストーラ作ってみました。よろしければ・・・
    コマンドプロンプト触るのが怖い人向けです。
    http://www.symphonic-net.com/misodengaku/laboratory/mme_setup.zip

    ソースも同梱していますので気に入らないところがあれば好きに改造していただいて構いません。

     |  miso  |  返信
  7. >コマンドプロンプト触るのが怖い人向けです。
    ありがとうございます。

    >ソースも同梱していますので気に入らないところがあれば好きに改造していただいて構いません。
    HSP のソースを初めて見ました。
    ワカワカランです。_| ̄|○

     |  kinzoku  |  返信
  8. おうお、なんだか盛り上がってますなw
    しかし、○エミュ楽しすぎますね。

    > Mery 本体のパスだけなんとかお願いします。

    ふと思い出したんですが、editor.FullName プロパティでMery本体のパス取得できます。
    あとは2パターン。そのフォルダ内に Mery.ini があればポータブルモードで使用しています。
    無い場合は、ユーザ名フォルダの中に Mery.ini があります。
    (実際にMery内部での INI ファイルの取得はそのルーチンです。)

    VBScriptで簡単に INI ファイルのパスも生成できるハズ・・・。たぶん・・・。

    > エクセルのセル内容取得

    この発想は無かった・・・w
    がんばれば XLS 形式を カンマ区切りで読み込むマクロとか作れそうですね。
    まぁ、用途は不明ですが・・・。

    いずれにせよ、ようやくゆっくりとした休日をすごせそうですw
    来週あたりには安定版をベクタに登録してみよっかな。

     |  Kuro  |  返信
  9. >ふと思い出したんですが、editor.FullName プロパティでMery本体のパス取得できます。
    >あとは2パターン。そのフォルダ内に Mery.ini があればポータブルモードで使用しています。
    >無い場合は、ユーザ名フォルダの中に Mery.ini があります。
    >(実際にMery内部での INI ファイルの取得はそのルーチンです。)
    ありがとうございます。
    INIファイルも、UTF7 も解決して、もうできました。

    注意事項。Mery の設定を変更しても、Mery を終了しないと、
    Mery.ini が更新されませんが、これは仕方ないですね。
    いままでみたいに、Mery の設定が分からない真っ暗闇とは違うし。

     |  kinzoku  |  返信
  10. 開発おつかれさまです。

    > INIファイルも、UTF7 も解決して、もうできました。

    はやっ!w
    UTF7とかよくわかりましたねw

    > 注意事項。Mery の設定を変更しても、Mery を終了しないと、
    > Mery.ini が更新されませんが、これは仕方ないですね。
    > いままでみたいに、Mery の設定が分からない真っ暗闇とは違うし。

    一応、オプション画面でOKボタンを押した際にも Mery.ini は更新されるはずですが、、、
    その他の場面での更新のタイミングは必要に応じてなので、更新されたりされなかったりですね。

     |  Kuro  |  返信
スポンサーリンク