◀一般トップへ
  • 1397 キーマクロの保存
    • 1398 Re:キーマクロの保存
      • 1399 Re2:キーマクロの保存
    • 1702 RE: キーマクロの保存
      • 1721 マクロについて
        • 1724 Re:マクロについて
          • 1733 Re2:マクロについて
          • 1736 Re2:マクロについて
            • 1737 WSH
  • [1397] キーマクロの保存 おきた 2002年03月14日 19:27

    キーマクロで検索や置換等する場合に円記号を条件に入れると
    保存したときに円記号がエスケープ(\が\\となる)されます
    が、PPA.DLL有りの時このマクロが実行されません。

    自分で円記号を1個削除すれば実行できるのでそれほど問題
    ではないのですが。とりあえず報告します。


    • [1398] Re:キーマクロの保存 やざき 2002年03月15日 00:36

      ▼ おきたさん
      > 自分で円記号を1個削除すれば実行できるのでそれほど問題
      > ではないのですが。とりあえず報告します。

      ありゃ。ほんとだ。\は\でエスケープする文化はないのかなぁ?
      詳しい人のコメント求む。
      • [1399] Re2:キーマクロの保存 Lionel 2002年03月15日 11:31

        ▼ やざきさん
        > ありゃ。ほんとだ。\は\でエスケープする文化はないのかなぁ?
        > 詳しい人のコメント求む。

        当方、なんちゃって Delphi 使いのため詳しいわけじゃないですが…(^^;
        Pascal に関しては、\ は特別な意味を持つ文字ではないのと、
        そもそも文字列ブロックの中に特殊な制御文字を入れることは出来ないので
        エスケープをする必要はありません。\r, \n, \t などは、Pascal では
        それぞれ #13, #10, #9 となり、かつ文字列ブロックの外に記述します。

        C, Java ... string = "foo\r\nbar";
        Pascal ... string := 'foo'#13#10'bar';

        ---

        余談ですが、これを試そうとして、マクロで

        S_InsText('foo'#13#10'bar');

        と書いて実行してみたところ、Pascal の仕様どおり

        foo(改行)
        bar

        と出力されます。
        しかし、この時キャレットは 'f' の手前で動かないまま点滅してます。
        にもかかわらず BackSpace キーを押すと2行目末尾の 'r' が削除されます。
        どうも、内部的な位置はちゃんと末尾 'r' の後ろに動いてるのに
        画面上の描画だけは先頭 'f' の手前に残ってる、という感じですね。

        些細なことですが、一応ご報告までに。

        sakura.exe 1.2.106.8
        PPA.DLL 1.24
        Windows2000 Professional
    • [1702] RE: キーマクロの保存 やざき 2002年04月20日 00:07


      >キーマクロで検索や置換等する場合に円記号を条件に入れると
      >保存したときに円記号がエスケープ(\が\\となる)されます
      >が、PPA.DLL有りの時このマクロが実行されません。

      この問題、すっかり保留にしたまま進んでしまっていますが、さしあたっては、

      1.PPA.DLLにあわせよう!
      2.いまのまま

      の2つの道があると思うのですが、どうしましょう?
      げんたさんが提案された、いろいろなマクロに対応するための案も非常に興味深いのですが、とりあえずバグっているのでなんとかしたいです。
      コメント求む。
      • [1721] マクロについて げんた 2002年04月21日 01:41

        現在ではPPA.DLLにあわせないと期待した結果が得られないのですから、とりあえずはあわせるしかないと思います。

        >いろいろなマクロに対応するための案
        上位互換を守ろうとするとこちらは必須だろうと考えています。

        最近マクロコマンドのいくつかに引数が追加されました。
        しかしながら、引数が変わるとPPAでは書式間違いと怒られて実行できなくなります。
        PPAでデフォルト引数が指定できないのであればこちらはあきらめるしかないのですが、せめてキーボードマクロだけは上位互換を維持していきたいとすると、マクロ保存で作った方はデフォルト引数を扱える形にして内部機能で常に実行し、PPAで実行するのは専用のマクロのみとする必要があると思います。

        マクロ言語については複数サポートするとユーザ間での再利用性が損なわれると思ったのですが、Ruby, WSH, (Pythonも?)を使っている人が多そうだということ、たいていは自分のために作っているので使い慣れた言語を使いたいであろうということから複数マクロのサポートが望ましいと思います。
        • [1724] Re:マクロについて おに 2002年04月21日 02:04

          横槍を失礼します。
          ActiveScriptRuby, ActivePythonがある以上、WSH対応すればこのふたつにも対応したことになりますが…。
          承知で発言なされているのであれば、失礼をご容赦下さい。
          (僕はRubyやPythonに中途半端に手を出して失敗した前歴有りです^_^)
          • [1733] Re2:マクロについて やざき 2002年04月21日 11:55


            WSH対応できるとハッピーだよね。前に少し調べたけど手間がかかりそうでやめた経験アリです。
          • [1736] Re2:マクロについて げんた 2002年04月21日 18:05

            >ActiveScriptRuby, ActivePythonがある以上、WSH対応すればこのふたつにも対応したことになりますが…。
            ActivePerlもあるからWSHだけ対応すればよい?

            ただ,1つWSHで気になっていることがあります.
            WSHから機能を使うためには VBScriptだと CreateObject( "object.in.registry" )みたいにする必要があるのでobject.in.registryの名前をレジストリに登録しなくてはならないと思うのですが,それをやってしまうと「レジストリは書き換えない」というこのエディタのポリシーに反してしまいます.
            • [1737] WSH おに 2002年04月21日 18:16

              > WSHから機能を使うためには VBScriptだと CreateObject( "object.in.registry" )みたいにする必要があるのでobject.in.registryの名前をレジストリに登録しなくてはならないと思うのですが,それをやってしまうと「レジストリは書き換えない」というこのエディタのポリシーに反してしまいます.

              cscript/wscriptからスクリプトを起動した場合、WScriptという名前のオブジェクトがcscript/wscriptから投入されて来ます。
              で、スクリプトはWScript.echo("Hello");とかできるのですが、これはレジストリに無かったと思います。
              このようにAddNamedItemを使って渡してしまえばスクリプト側でCreateObjectしてもらう必要はありません。
              短いサンプルが、確かActiveScriptRubyのサイトに置かれていたと思います。
              直接リンク貼っていいのかな?
              http://www.geocities.co.jp/SiliconValley-PaloAlto/9251/ruby/c.html