マクロサーバのsetcurdirについてNo.03571
舩橋幸雄 さん 03/02/05 14:50
 
舩橋です。
マクロサーバのsetcurdirがうまく働きません。
以下のディレクトリを指定したとき、カレントディレクトリが移動しません。
(カレントディレクトリがサブディレクトリの時)

 ・ カレントディレクトリの1階層上のディレクトリ
 ・ カレントディレクトリの1階層下のディレクトリ
 ・ カレントディレクトリの同じ階層のディレクトリ

以下の場合は、正常に移動することを確認しています。

 ・ カレントディレクトリの1階層上のディレクトリど同じ階層の別ディレクトリ

 ・ドライブ直下を指定
 ・別ドライブ上のディレクトリ
 
マクロにミスがあるのでしょうか?


動作確認を行ったマクロを以下に示します。
(田楽DLLも使用しています)

run "macserv.exe /h";
ddeinitiate "HideMacroServer", "FileService";
$curdir = dderequest( "getcurdir" );
ddeexecute "exit";

loaddll "DengakuDll";
$dir1 = dllfuncstr("GETDIRNAMEEX",hidemaruhandle(0),"フォルダを指定して下さ
い",$curdir,1);
if( $dir1=="" ){
   freedll;
   endmacro;
}
freedll;

run "macserv.exe /h";
ddeinitiate "HideMacroServer", "FileService";
ddeexecute "setcurdir "+$dir1;
$curdir = dderequest( "getcurdir" );
ddeexecute "enumfile *.*";

insert "#"+$dir1+";"+$curdir;
insertreturn;

#i = 0;
while(1) {
$name[#i] = dderequest( "findnext" );
if( $name[#i] == "" ) break;
insert $name[#i];
insertreturn;
#i = #i + 1;
}

ddeexecute "enumdir *.*";

#i = 0;
while(1) {
$dirname[#i] = dderequest( "findnext" );
if( $dirname[#i] == ""  ) break;
                if( $dirname[#i] == "." ) continue;
                if( $dirname[#i] == "..") continue;
insert $dir1 +"\\" + $dirname[#i];
insertreturn;
#i = #i + 1;
}

#i = 0;
#j = 0;
while(1) {
if( $dirname[#i] == "" ) break;

ddeexecute "exit";
run "macserv.exe /h";
ddeinitiate "HideMacroServer", "FileService";
ddeexecute "setcurdir "+$dir1+"\\"+$dirname[#i];
ddeexecute "enumfile *.*";
while(1) {
$name[#j] = dderequest( "findnext" );
if( $name[#j] == "" ) break;
insert $dirname[#i]+"\\"+$name[#j];
insertreturn;
#j = #j + 1;
}
#i = #i + 1;
}



ddeexecute "exit";

[ ]
RE:03571 マクロサーバのsetcurdirについNo.03572
杉浦 まさき さん 03/02/05 23:53
 
舩橋さん、こんばんは。
杉浦 まさき です。

>マクロサーバのsetcurdirがうまく働きません。
>以下のディレクトリを指定したとき、カレントディレクトリが移動しません。
> ・ カレントディレクトリの1階層上のディレクトリど同じ階層の別ディレクトリ
> ・ドライブ直下を指定
> ・別ドライブ上のディレクトリ

気になって調べてみましたが、当方の環境では上記のいずれの場合も
正常に動作しているように見えます。
#Win2000SP3, 秀丸V3.19, マクロサーバV1.4, 田楽DLLV2.40 で確認。

というわけで、再現できる
具体的なパス名を教えていただけるとよいのですが…。

#個人的には何故マクロサーバと田楽DLLを併用しているかの方が
 気になったりしますが(^^;。
#ついでに宣伝ですが、別会議室で話題になっている(2バイト文字対応の)
 strrstr() も trim() も田楽に用意されてます。あ、reverse() はないですが
 今度のバージョンアップでこっそり追加しちゃおうかと(笑)。


[ ]
RE:03572 マクロサーバのsetcurdirについNo.03573
舩橋幸雄 さん 03/02/06 09:08
 
杉浦殿

舩橋です。回答ありがとうございます。


>舩橋さん、こんばんは。
>杉浦 まさき です。
>
>>マクロサーバのsetcurdirがうまく働きません。
>>以下のディレクトリを指定したとき、カレントディレクトリが移動しません。
>> ・ カレントディレクトリの1階層上のディレクトリど同じ階層の別ディレクトリ
>> ・ドライブ直下を指定
>> ・別ドライブ上のディレクトリ

私の投稿を編集された際のミスなのか、誤解されたのか解らないのですが、
マクロサーバのsetcurdirがうまく働かないのは、
 ・ カレントディレクトリの1階層上のディレクトリ
 ・ カレントディレクトリの1階層下のディレクトリ
 ・ カレントディレクトリの同じ階層のディレクトリ
の方です。

>
>気になって調べてみましたが、当方の環境では上記のいずれの場合も
>正常に動作しているように見えます。
>#Win2000SP3, 秀丸V3.19, マクロサーバV1.4, 田楽DLLV2.40 で確認。
>
>というわけで、再現できる
>具体的なパス名を教えていただけるとよいのですが…。

カレントディレクトリが"My Documents"のサブディレクトリある時、
setcurdirに"My Documents"のパスを指定しても、カレントディレクトリ
が変わりません。(特殊なケース?)

>
>#個人的には何故マクロサーバと田楽DLLを併用しているかの方が
> 気になったりしますが(^^;。

 ダイアログを出すのに今まで田楽DLLを使っていて、今回初めてマクロ
 サーバを使います。今後、ダイアログサービスの機能を習得して、ダイア
 ログの表示もマクロサーバに切り替えていこうと考えています。
 ファイルやフォルダを選択するダイアログが、標準的に提供されている
 とうれしいんですが(^^;。


>#ついでに宣伝ですが、別会議室で話題になっている(2バイト文字対応の)
> strrstr() も trim() も田楽に用意されてます。あ、reverse() はないですが
> 今度のバージョンアップでこっそり追加しちゃおうかと(笑)。
>

[ ]
RE:03573 マクロサーバのsetcurdirについNo.03574
舩橋幸雄 さん 03/02/06 09:15
 
舩橋です
書き忘れていました。環境は以下の通りです。

 Windows 2000 SP3
 秀まるおのマクロサーバ Version 1.4
 秀丸エディタ Version 3.19
 田楽DLL Ver.2.20

>杉浦殿
>
>舩橋です。回答ありがとうございます。
>
>
>>舩橋さん、こんばんは。
>>杉浦 まさき です。
>>
>>>マクロサーバのsetcurdirがうまく働きません。
>>>以下のディレクトリを指定したとき、カレントディレクトリが移動しません。
>>> ・ カレントディレクトリの1階層上のディレクトリど同じ階層の別ディレクトリ
>>> ・ドライブ直下を指定
>>> ・別ドライブ上のディレクトリ
>
>私の投稿を編集された際のミスなのか、誤解されたのか解らないのですが、
>マクロサーバのsetcurdirがうまく働かないのは、
> ・ カレントディレクトリの1階層上のディレクトリ
> ・ カレントディレクトリの1階層下のディレクトリ
> ・ カレントディレクトリの同じ階層のディレクトリ
>の方です。
>
>>
>>気になって調べてみましたが、当方の環境では上記のいずれの場合も
>>正常に動作しているように見えます。
>>#Win2000SP3, 秀丸V3.19, マクロサーバV1.4, 田楽DLLV2.40 で確認。
>>
>>というわけで、再現できる
>>具体的なパス名を教えていただけるとよいのですが…。
>
>カレントディレクトリが"My Documents"のサブディレクトリある時、
>setcurdirに"My Documents"のパスを指定しても、カレントディレクトリ
>が変わりません。(特殊なケース?)
>
>>
>>#個人的には何故マクロサーバと田楽DLLを併用しているかの方が
>> 気になったりしますが(^^;。
>
> ダイアログを出すのに今まで田楽DLLを使っていて、今回初めてマクロ
> サーバを使います。今後、ダイアログサービスの機能を習得して、ダイア
> ログの表示もマクロサーバに切り替えていこうと考えています。
> ファイルやフォルダを選択するダイアログが、標準的に提供されている
> とうれしいんですが(^^;。
>
>
>>#ついでに宣伝ですが、別会議室で話題になっている(2バイト文字対応の)
>> strrstr() も trim() も田楽に用意されてます。あ、reverse() はないですが
>> 今度のバージョンアップでこっそり追加しちゃおうかと(笑)。
>>

[ ]
RE:03574 マクロサーバのsetcurdirについNo.03575
杉浦 まさき さん 03/02/07 00:22
 
こんばんは。杉浦 まさき です。

>>私の投稿を編集された際のミスなのか、誤解されたのか解らないのですが、
>>マクロサーバのsetcurdirがうまく働かないのは、
>> ・ カレントディレクトリの1階層上のディレクトリ
>> ・ カレントディレクトリの1階層下のディレクトリ
>> ・ カレントディレクトリの同じ階層のディレクトリ
>>の方です。

発言自体を誤解していたのは確かですが(^^;、
この場合も手元で試した限りは大丈夫だったので
勘違いに気づきませんでした。すみません。

ただ、

>>>というわけで、再現できる
>>>具体的なパス名を教えていただけるとよいのですが…。
>>カレントディレクトリが"My Documents"のサブディレクトリある時、
>>setcurdirに"My Documents"のパスを指定しても、カレントディレクトリ
>>が変わりません。(特殊なケース?)

はこちらでも再現できました。で、単に空白を含むフォルダ名を指定すると
NGなだけのような…。>マクロサーバ
#こちらでは D:\Program Files\subdir でも発生しましたし。

>>>#個人的には何故マクロサーバと田楽DLLを併用しているかの方が
>>> 気になったりしますが(^^;。
>> ダイアログを出すのに今まで田楽DLLを使っていて、今回初めてマクロ
>> サーバを使います。今後、ダイアログサービスの機能を習得して、ダイア
>> ログの表示もマクロサーバに切り替えていこうと考えています。
>> ファイルやフォルダを選択するダイアログが、標準的に提供されている
>> とうれしいんですが(^^;。

僕が田楽サーバ&DLLを作った理由はまさに舩橋さんが最後に
おっしゃられていることなんですが…まぁ田楽シリーズはアプリとして
不安定なのは確かなので(^^;、マクロサーバの方がいいという意見は
もっともだと思います。<おい(笑)


[ ]
RE:03575 マクロサーバのsetcurdirについNo.03576
舩橋幸雄 さん 03/02/07 15:14
 
舩橋です。

>こんばんは。杉浦 まさき です。
>
>>>私の投稿を編集された際のミスなのか、誤解されたのか解らないのですが、
>>>マクロサーバのsetcurdirがうまく働かないのは、
>>> ・ カレントディレクトリの1階層上のディレクトリ
>>> ・ カレントディレクトリの1階層下のディレクトリ
>>> ・ カレントディレクトリの同じ階層のディレクトリ
>>>の方です。
>
>発言自体を誤解していたのは確かですが(^^;、
>この場合も手元で試した限りは大丈夫だったので
>勘違いに気づきませんでした。すみません。
>
>ただ、
>
>>>>というわけで、再現できる
>>>>具体的なパス名を教えていただけるとよいのですが…。
>>>カレントディレクトリが"My Documents"のサブディレクトリある時、
>>>setcurdirに"My Documents"のパスを指定しても、カレントディレクトリ
>>>が変わりません。(特殊なケース?)
>
>はこちらでも再現できました。で、単に空白を含むフォルダ名を指定すると
>NGなだけのような…。>マクロサーバ
>#こちらでは D:\Program Files\subdir でも発生しましたし。


copy で \Program Files配下のファイルをcopyしようとしたら失敗しました。
マクロサーバ全体が、空白を含むフォルダに対応できていないのでしょうか?
(" "で囲むと変数が使えないし・・・。)
--->秀丸担当殿


>
>>>>#個人的には何故マクロサーバと田楽DLLを併用しているかの方が
>>>> 気になったりしますが(^^;。
>>> ダイアログを出すのに今まで田楽DLLを使っていて、今回初めてマクロ
>>> サーバを使います。今後、ダイアログサービスの機能を習得して、ダイア
>>> ログの表示もマクロサーバに切り替えていこうと考えています。
>>> ファイルやフォルダを選択するダイアログが、標準的に提供されている
>>> とうれしいんですが(^^;。
>
>僕が田楽サーバ&DLLを作った理由はまさに舩橋さんが最後に
>おっしゃられていることなんですが…まぁ田楽シリーズはアプリとして
>不安定なのは確かなので(^^;、マクロサーバの方がいいという意見は
>もっともだと思います。<おい(笑)
>

[ ]
RE:03576 マクロサーバのsetcurdirについNo.03577
舩橋幸雄 さん 03/02/07 18:27
 
舩橋です。

ddeexecute "setcurdir "+$dir1;

ddeexecute "setcurdir \x22"+$dir1+"\x22";
に置き替えることにより、うまく動作しました。
(copy も同様)


>舩橋です。
>
>>こんばんは。杉浦 まさき です。
>>
>>>>私の投稿を編集された際のミスなのか、誤解されたのか解らないのですが、
>>>>マクロサーバのsetcurdirがうまく働かないのは、
>>>> ・ カレントディレクトリの1階層上のディレクトリ
>>>> ・ カレントディレクトリの1階層下のディレクトリ
>>>> ・ カレントディレクトリの同じ階層のディレクトリ
>>>>の方です。
>>
>>発言自体を誤解していたのは確かですが(^^;、
>>この場合も手元で試した限りは大丈夫だったので
>>勘違いに気づきませんでした。すみません。
>>
>>ただ、
>>
>>>>>というわけで、再現できる
>>>>>具体的なパス名を教えていただけるとよいのですが…。
>>>>カレントディレクトリが"My Documents"のサブディレクトリある時、
>>>>setcurdirに"My Documents"のパスを指定しても、カレントディレクトリ
>>>>が変わりません。(特殊なケース?)
>>
>>はこちらでも再現できました。で、単に空白を含むフォルダ名を指定すると
>>NGなだけのような…。>マクロサーバ
>>#こちらでは D:\Program Files\subdir でも発生しましたし。
>
>
>copy で \Program Files配下のファイルをcopyしようとしたら失敗しました。
>マクロサーバ全体が、空白を含むフォルダに対応できていないのでしょうか?
>(" "で囲むと変数が使えないし・・・。)
>--->秀丸担当殿
>
>
>>
>>>>>#個人的には何故マクロサーバと田楽DLLを併用しているかの方が
>>>>> 気になったりしますが(^^;。
>>>> ダイアログを出すのに今まで田楽DLLを使っていて、今回初めてマクロ
>>>> サーバを使います。今後、ダイアログサービスの機能を習得して、ダイア
>>>> ログの表示もマクロサーバに切り替えていこうと考えています。
>>>> ファイルやフォルダを選択するダイアログが、標準的に提供されている
>>>> とうれしいんですが(^^;。
>>
>>僕が田楽サーバ&DLLを作った理由はまさに舩橋さんが最後に
>>おっしゃられていることなんですが…まぁ田楽シリーズはアプリとして
>>不安定なのは確かなので(^^;、マクロサーバの方がいいという意見は
>>もっともだと思います。<おい(笑)
>>

[ ]