クリップボード・データの確認No.02524
白雲斎 さん 01/10/14 15:30
 
 白雲斎 と申します。

早速で恐縮ですが、

新規秀丸上(入力データなし)で以下のマクロを実行します。

// test.mac Start ---------------------------------------------

setclipboard "";
selectall;
copy;
if ( !anyclipboard ) message "データなし!";
endmacro;

// test.mac End -----------------------------------------------

実行後、「データなし!」と言うメッセージが表示される事を期待していたので
すが、何も起こりません。

私は、何か勘違いをしているのでしょうか?

補足:"linecount", "linelen" による検証は抜きと言う事で

-------------------------------
 ・秀丸 Ver 3.09
 ・Windows 2000Pro sp2
-------------------------------

[ ]
RE:02524 クリップボード・データの確認No.02525
ひろ さん 01/10/14 19:17
 
 白雲斎さん今日は、ひろです。
> setclipboard "";

> selectall;
> copy;
の時点で空の文字がクリップボードにコピーされるため、
> if ( !anyclipboard ) message "データなし!";
が働かないのだと思います。

//--------------- check clipboard --------------------------
beginclipboardread;
$clipboard = getclipboard;
while(1){
  $$tmp = getclipboard;
  if($$tmp =="")break;
  $clipboard = $clipboard + "\n" + $$tmp;
}
if( !strlen($clipboard) ) message "データなし!";
//-----------------------------------------------------------
とすれば、良いのではないでしょうか?

[ ]
RE:02525 クリップボード・データの確認No.02526
白雲斎 さん 01/10/14 23:50
 
 白雲斎 と申します。

ひろさん、返信ありがとうございます。

まず、
>beginclipboardread;
>$clipboard = getclipboard;
このクリップボード・データの所得と確認方法は存じておりました。
「補足」の説明不足ですみません。

>> setclipboard "";
>や
>> selectall;
>> copy;
>の時点で空の文字がクリップボードにコピーされるため、

投稿[02524]で示した test.mac を以下のように改変して実行します。

// test.mac Start -------------------------------------

setclipboard "";
//selectall; // コメントアウト
//copy;      // コメントアウトしても、しなくても
if ( !anyclipboard ) message "データなし!";
endmacro;

// test.mac End ---------------------------------------

すると、"copy" 文の有るなしに関わらず、メッセージは表示されます。
ここでは "selectall" のみが "anyclipboard" に影響しているようですね。

【ところで何がしたい(言いたい)の!】

例外処理の確認のため test.mac なるものを作成して実行すると、期待した
結果と違った(投稿[02524])為、"anyclipboard" とはこう言う物なのかと
言う、問いかけと確認をさせてもらった次第です。

[ ]
RE:02526 クリップボード・データの確認No.02527
ひろ さん 01/10/15 12:57
 
 白雲斎さん今日は、ひろです。
> すると、"copy" 文の有るなしに関わらず、メッセージは表示されます。
> ここでは "selectall" のみが "anyclipboard" に影響しているようですね。
 それってなんだか変な仕様ですね(^^)。

[ ]
RE:02527 クリップボード・データの確認No.02528
山紫水明 さん 01/10/15 21:17
 
 白雲斎さん,ひろさん,こんばんは。

》> すると、"copy" 文の有るなしに関わらず、メッセージは表示されます。
》> ここでは "selectall" のみが "anyclipboard" に影響しているようですね。
》 それってなんだか変な仕様ですね(^^)。

マクロに,
esle message "データあり";
を加えてみました。

 selectall と copy 両方がある場合,"データあり"
  selectall があって copy がない場合,"データなし"
  selectall がなくて copy がある場合,"データなし"

 copy は範囲選択状態でなければ機能しない,だから selectall がなければ,"
データなし"となる,逆に両方あれば,copy の内容が空であってもデータありと判
断する,というのが anyclipboard の仕様ということではないでしょうか。
 selectall は copylineや coptword でもいいわけです。

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

[ ]
RE:02528 クリップボード・データの確認No.02529
白雲斎 さん 01/10/16 03:31
 
山紫水明さん、今日は。 白雲斎 と申します。

>マクロに,else message "データあり"; を加えてみました。
中略
> copy は範囲選択状態でなければ機能しない,だから selectall がなければ,"
>データなし"となる,逆に両方あれば,copy の内容が空であってもデータありと判
>断する,というのが anyclipboard の仕様ということではないでしょうか。

わざわざ、拡張検証してくださってありがとうございます。

素人考えで恐縮ですが、

beginclipboardread;
$a = getclipboard;
if ($a == "") message "データなし!";

は、期待する例外処理をしてくれるのに、
なぜ "anyclipboard" はダメなんでしょうね?

いや、深く掘り下げないでくださいね。素人考えですので・・・
仕様という事で、全く問題ないです。

[ ]
RE:02529 クリップボード・データの確認No.02532
山紫水明 さん 01/10/16 20:15
 
 白雲斎さん,こんばんは。

》なぜ "anyclipboard" はダメなんでしょうね?

同じく新規ファイルの上で,

//---------------
selectall;
copy;
message str(result);
endmacro;
//---------------

を実行すると,空コピーでも1(成功)が返ります。
selectall をとると,0(失敗)が返ります。
多分,これと関連があるのでしょうね。

》いや、深く掘り下げないでくださいね。素人考えですので・・・

 こちらも素人なので,浅くしか掘り下げられませんでした。(^^;

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

[ ]