マクロサーバに関する要望No.00216
阿部 智彦 さん 99/02/03 20:10
 


 はじめまして 阿部といいます。

秀丸のマクロを作るのにマクロサーバを使わせて頂いております。

現在、マクロサーバを使ったマクロを作成しているのですが、マクロサーバ機
能上の制約から期待した通りに動作しない処理があります。

具体的には、次の様な手順でダイアログボックスの表示中にリストボックスの
内容を、ddeexecute系のコマンドを使って、動的に更新する処理を行う場合が
問題となります。


@ リストボックス中で現在選択されているアイテムの位置を読み出す
    処理: $a = dderequest("getstate MyList");
A リストボックスの内容をクリアする
    処理:  ddeexecute "restlist";
B リストボックスに新しいアイテムを転送する
    処理: ddeexecute "setitem, MyList"+$new_item;
C @で読み出した位置のアイテム選択する
    処理: ?

上の処理で問題となる個所、BとCです。

先ず、Bについてですが、リストボックスのアイテムとしてマクロサーバに文
字列を転送する際に、転送する文字列中にカンマやスペースが入っていると、
最初のカンマまたはスペースの前までしか転送されません。

ダイアログボックスの作成時にddepoke "item"でリストボックスのアイテムを
初期化する時は、文字列中にカンマやスペースが入っていても問題なくリスト
ボックスに転送されるので、ddexecute "setitem"のバグと思われます。

またCについては、マクロサーバのddeexecute系の命令には、リストボックス
アイテムのデフォルト選択位置を指定するためのもの(ddepoke "default"に相
当)が存在しないことが問題点です。

ご多忙中とは思いますが上記二点についての対策について、よろしくお願い申
し上げます。


[ ]
RE:00216 マクロサーバに関する要望No.00217
杉浦 まさき さん 99/02/03 23:59
 
阿部さん、はじめまして。
 杉浦 まさき と申します。

>先ず、Bについてですが、リストボックスのアイテムとしてマクロサーバに文
>字列を転送する際に、転送する文字列中にカンマやスペースが入っていると、
>最初のカンマまたはスペースの前までしか転送されません。

ddeexecute コマンドではスペースやカンマを
引数の区切りと見なしているのが原因ですね。
#ddepoke は2つめまでのカンマ(とその前後の空白)を区切りと見なすので、
 ddepoke "item", "a,b, c, d";
 という指定で "c, d" が渡せるようです。
##いずれにしてもバグではなく仕様だと思いますよ。

で、そういう場合は面倒ですが
ddeexecute "setitem MyList,\"" + $new_item + "\"";
という風にダブルクォートで囲めばOKだと思います。
#$new_item にダブルクォートが含まれていたら…うーん(^^;。

>またCについては、マクロサーバのddeexecute系の命令には、リストボックス
>アイテムのデフォルト選択位置を指定するためのもの(ddepoke "default"に相
>当)が存在しないことが問題点です。

なるほど、これは確かにないですね。
#早速田楽鯖(拙作のマクロサーバ互換DDEサーバですが(^^;)に
 追加しよっかな(^^;。


[ ]
RE:00217 マクロサーバに関する要望No.00218
阿部 智彦 さん 99/02/04 14:14
 
杉浦さん はじめまして

 大変詳し説明をどうも有難うございます。お蔭様で、カンマやスペースの入っ
た文字列が上手くマクロサーバに渡せないのは、マクロサーバの問題ではなく、
秀丸のddepoke と ddeexecute の動作の違いによるものであることがよく解り
ました。早速、ddexecute の引数文字列をクォーティングしてみたところ上手
くいきました。

あとは、リストボックスの再選択処理だけですが、これは、流石にマクロサーバ
本体の問題の様ですね。


[ ]
RE:00218 マクロサーバに関する要望No.00219
杉浦 まさき さん 99/02/04 15:43
 
阿部さん、こんにちは。
 杉浦 です。

>あとは、リストボックスの再選択処理だけですが、これは、流石にマクロサーバ
>本体の問題の様ですね。

前回の発言を書いた時にはすっかり忘れてましたが、
 拙作の田楽鯖には既に実装されてました(^^;。
 #だから機能増やし過ぎだって >σ(^^;

というわけで(^^;、一度試してみてもらえるとありがたいです。
http://www.ceres.dti.ne.jp/~sugiura/hidemaru/macros/dgserver/
 から入手できます。


[ ]
RE:00219 マクロサーバに関する要望No.00221
阿部 智彦 さん 99/02/11 08:51
 
杉浦さん 色々お教くださり有難うございました。

このところ忙しく、なかなか時間がとれなかったのですが、昨日ようやく田楽鯖を
使ってみることができました。まだ、ざっとマニュアルを読んだだけですが、なか
なかの高機能で満足しています。これから便利に使わせていただきます。

ところで、私も以前、HTML編集用のマクロを作成する際に簡単なマクロサーバを作っ
たことがあります。基本的にはウィンドウズのコモンダイアログボックスを何種類
か出すためだけの簡単なものですが、それでも結構苦労した覚えがあります。コモ
ンダイアログの表示機能しかないので、それ以外のカスタムダイアログボックスは
通常のマクロサーバ機能を使わなければならず、マクロサーバが2種類も同時に常
駐するというしょうもない代物でした。

田楽鯖があればそれらをまとめて置き換えることも可能ですし、他にも、色々でき
そうで楽しみです。本当に有難うございました。
 

[ ]