マクロサーバenumfileで指定するwildcardNo.01618
MoW さん 00/11/19 02:56
 
MoWとモウします。

秀丸のマクロで、マクロを起動したフォルダ内の任意の拡張子のファイルリスト
を表示しようとしているのですが、うまく行かない事がありますので、質問させ
て頂きます。

具体的なコードは以下の様な感じです。
//-------------------------------------------------//
// 検索対象拡張子を設定
$ext = "*.inc;*.f;*.f90;*.for";

// マクロサーバの起動
run "macserv.exe";
ddeinitiate "HideMacroServer", "FileService";
if( !result ) {
    message "ddeinitiate failed.";
    ddeexecute "exit";
    endmacro;
}

// カレントディレクトリの移動
ddeexecute "setcurdir \"" + directory2 + "\"";
if( !result ) {
    message "ddeexecute setcurdir  failed.";
    ddeexecute "exit";
    endmacro;
}

// ファイル検索
#i = 0;
ddeexecute "enumfile " + $ext;
while(1) {
    $fname[#i] = dderequest( "findnext" );
    if( $fname[#i] == "" ) break;
    #i = #i + 1;
}
ddeexecute "exit";

// Menu
menuarray $fname, #i;

endmacro;
//-------------------------------------------------//

$extに設定したワイルドカードでファイルを検索して、リストを表示しているの
ですが、上のコードの様に、
    $ext = "*.inc;*.f;*.f90;*.for";
と指定すると、正確なファイルリストを表示してくれません(確かに存在するフ
ァイルを表示しない)。 おそらく拡張子の先頭文字が f で重複しているのが原
因だと思うのですが。同じような例では、
    $ext = "*.txt;*.htm;*.html";
などもありますが、こちらもうまくいきません。

ぶっちゃけた話、
    $ext = "*.inc;*.f*";
と指定すれば良いのですが、$extはユーザーによる設定を可能にしようと考えて
いるので、少々都合が悪い気がします。

何かいい方法はないでしょうか?それとも何かミスがあるのでしょうか?

ちなみに、マクロサーバはVer.1.4、秀丸はVer.3.05、OSはWindows98SEを使用し
ています。

あと田楽サーバは試したことがないのですが、上記の様な事は起こらないのでし
ょうか?

回答の程、よろしくお願いします。

[ ]
RE:01618 マクロサーバenumfileで指定するNo.01619
杉浦 まさき さん 00/11/19 23:44
 
MoW さん、はじめまして。
田楽鯖の作者の杉浦です。

>    $ext = "*.inc;*.f;*.f90;*.for";
>と指定すると、正確なファイルリストを表示してくれません(確かに存在するフ
>ァイルを表示しない)。 おそらく拡張子の先頭文字が f で重複しているのが原
>因だと思うのですが。

こちらでも同じような結果になりました。
#"*.txt;*.html" という風に全く異なる拡張子の場合はOKのようですが、
 "*.t;*.tx;*.txt" と指定して、"foo.t", "foo.tx", "foo.txt" の
 3つのファイルを置いた場合、最初の指定 "foo.t" にしか
 マッチしないようです。なお、ワイルドカードの指定の順序を変更しても、
 やっぱり最初の指定にしかマッチしていないみたいです。

>あと田楽サーバは試したことがないのですが、上記の様な事は起こらないのでし
>ょうか?

田楽鯖の方は、そもそもセミコロンで区切って複数のワイルドカードを
指定することができません(^^;。
#単に実装するのを忘れていた(^^;だけなので、早速修正しますm(_ _)m。


[ ]
RE:01619 マクロサーバenumfileで指定するNo.01620
MoW さん 00/11/20 02:18
 
杉浦さんどうもです。

仕方ないので、拡張子のリスト($ext)を分割して配列に代入し、
ファイルの検索をループで繰り返す方法で対処しました。

また何か情報があれば、よろしくお願いします。

[ ]
RE:01620 マクロサーバenumfileで指定するNo.01627
杉浦 まさき さん 00/12/05 23:55
 
ども、田楽鯖&DLLの作者の杉浦です。

100%宣伝モードで申し訳ないのですが…
以前にここで発言のあった enum*** のワイルドカードの複数指定ですが、
田楽の方でもちゃんとできるようにしました。
#報告されていた問題も起こらないようなので、
 あれはおそらくマクロサーバの内部処理の問題ですね。>担当様

あと、山紫水明さんのご所望のファイル名のソートですが、
ついでに(というかむしろこっちの方がメインですが(^^)対応して
名前、種類、タイムスタンプ、サイズによるソート&出力が
できるようになりました。

DLLだけですが、以下の場所にβ版がありますので
もしできましたらテストして頂けると助かりますm(_ _)mm(_ _)m。

http://www.ceres.dti.ne.jp/~sugiura/hidemaru/macros/dgserver/

ではでは。

[ ]
RE:01627 マクロサーバenumfileで指定すNo.01628
山紫水明 さん 00/12/06 22:57
 
    杉浦 まさきさん こんばんは。

》あと、山紫水明さんのご所望のファイル名のソートですが、
》ついでに(というかむしろこっちの方がメインですが(^^)対応して
》名前、種類、タイムスタンプ、サイズによるソート&出力が
》できるようになりました。

 試してみました。
 デフォルトで名前順になるので,オプションをつける必要はないのですが,折角
でしたので,オプションもつけていろいろやってみました。OKです。(^^;
 どうもお世話様でした。m(__)m

 では, (^^)/~
                                        山紫水明

[ ]
RE:01628 マクロサーバenumfileで指定すNo.01629
杉浦 まさき さん 00/12/06 23:23
 
ども、杉浦 まさき です。

> 試してみました。
> デフォルトで名前順になるので,オプションをつける必要はないのですが,折角
>でしたので,オプションもつけていろいろやってみました。OKです。(^^;

早速試して頂いてどうもですm(_ _)m。
で、β1には複数ワイルドカードを指定して
重複してヒットした同じファイルを重複の数だけ出力するという
バグがありますんで、早速β2をアップすることにします。

#で、前回書き忘れましたが、バグ報告等は僕のホームページの
 サポート会議室の方にお願いしますm(_ _)m。>ALL


[ ]