dderequestの文字数は255文字?No.15293
k.kiyo さん 03/08/25 18:29
 
dderequestが失敗することがあって、調べてみると全角も1文字として255文字を
超えると失敗するようです。
dderequestに指定する文字数は全角も1文字として255文字までですか?
ddeexecute と ddepoke もそうですか?

[ ]
RE:15293 dderequestの文字数は255文字No.15299
秀丸担当 さん 03/08/26 19:17
 
>dderequestが失敗することがあって、調べてみると全角も1文字として255文字を
>超えると失敗するようです。
>dderequestに指定する文字数は全角も1文字として255文字までですか?
>ddeexecute と ddepoke もそうですか?

調べてみたところ、
・dderequestは、520バイト(全角で260文字)
・ddeexecuteは文字定数と変数の許す限り
・ddepokeはアイテム名が8192バイト、パラメータは文字定数と変数の許す限り
・文字定数は4096バイト
・文字列型変数は8192バイト
でした。
いずれもバイト数より1を引いた値が最大だと思います。

[ ]
RE:15299 dderequestの文字数は255文字No.15303
k.kiyo さん 03/08/27 00:55
 
>調べてみたところ、
>・dderequestは、520バイト(全角で260文字)
>・ddeexecuteは文字定数と変数の許す限り
>・ddepokeはアイテム名が8192バイト、パラメータは文字定数と変数の許す限り
>・文字定数は4096バイト
>・文字列型変数は8192バイト
>でした。
>いずれもバイト数より1を引いた値が最大だと思います。

秀まるおのマクロサーバ Version 1.4でテストしてみました。
以下のマクロを実行すると「dderequestで相手が応答しません。」というエラーメッ
セージがでます。
dderequestが255文字を超えるとうまくいきません。
520バイト制限ではないような結果です。
もういちど調べてもらえませんか。
環境は秀丸3.19 WindowsXPです。

run "macserv.exe";
ddeinitiate "HideMacroServer", "FileService";
if(!result){
 message "dde false";
 endmacro;
}
$File="existfile 00000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000001.txt";
if( dderequest( $File ) != "" ){
 message ".txtは存在します";
}else{
 message ".txtは存在しません";
}
endmacro;

[ ]
RE:15303 dderequestの文字数は255文字No.15311
秀丸担当 さん 03/08/27 17:48
 

>秀まるおのマクロサーバ Version 1.4でテストしてみました。
>以下のマクロを実行すると「dderequestで相手が応答しません。」というエラーメッ
>セージがでます。
>dderequestが255文字を超えるとうまくいきません。
>520バイト制限ではないような結果です。
>もういちど調べてもらえませんか。

マクロサーバを使った場合は、マクロサーバ側に制限がありました。
dderequest、ddeexecute、ddepokeいずれも512バイトです。

[ ]
RE:15311 dderequestの文字数は255文字No.15312
k.kiyo さん 03/08/27 23:56
 
>マクロサーバを使った場合は、マクロサーバ側に制限がありました。
>dderequest、ddeexecute、ddepokeいずれも512バイトです。
何度もすみません、512バイト制限ということですが、dderequestが255バイトを超え
るとエラーになります。
これはバグでしょうか>秀丸担当さん。

環境は秀丸3.19 WindowsXPです。

[ ]
RE:15312 dderequestの文字数は255文字No.15313
杉浦 まさき さん 03/08/28 02:57
 
ども、単なるユーザーの杉浦まさきと申します。

>>マクロサーバを使った場合は、マクロサーバ側に制限がありました。
>>dderequest、ddeexecute、ddepokeいずれも512バイトです。
>何度もすみません、512バイト制限ということですが、dderequestが255バイトを超
>えるとエラーになります。
>これはバグでしょうか>秀丸担当さん。

最大長で 255 文字、というのは OS (より正確には DDE
マネージメントライブラリ)の制限です。

[ ]
RE:15313 dderequestの文字数は255文字No.15314
秀丸担当 さん 03/08/28 16:44
 

>最大長で 255 文字、というのは OS (より正確には DDE
>マネージメントライブラリ)の制限です。

どうもそのようです。ありがとうございます。
DDEMLのDdeCreateStringHandleが255までしか対応していませんでした。

[ ]
RE:15314 dderequestの文字数は255文字No.15315
k.kiyo さん 03/08/28 20:07
 
> >最大長で 255 文字、というのは OS (より正確には DDE
> >マネージメントライブラリ)の制限です。
>
> どうもそのようです。ありがとうございます。
> DDEMLのDdeCreateStringHandleが255までしか対応していませんでした。

秀丸の制限ではなかったんですね。
Webで調べてみたら
「この制限の理由は、DDEMLストリング管理機能がグローバルアトムを使用してイン
プリメントされているからです。」
「文字列アトムに関連付けられている文字列のサイズは、 255バイト以下でなければ
ならない。
この制限はすべてのアトム関数に適用される。」
ということらしいです。

[ ]