getclipboard(Ver9.35対応版)
目次−
クリップボードと変数のやりとり−
getclipboard
getclipboard関数は、クリップボードから1行分のデータを取り出し、それを返します。
- パラメータ
-
パラメータはありません。
- 返り値(文字列値)
-
取得した文字列を返します。
'\x0D'は除去されますが、'\x0A'は行末についてきます。
ただし、クリップボードデータの最後の部分が改行で終わっていない場合は、'\x0A'無しでデータが返ってきます。
getclipboard()を使うには、まず
beginclipboardreadを実行しないといけません。
beginclipboardreadを実行した直後のgetclipboard()の値はクリップボード内データの1行目で、2回目の値は2行目で、以下、3行目、4行目とデータを受けとることができます。
クリップボードの最後までデータを取り出し終わるとgetclipboard()の返す値は""となります。
getclipboard()を続けて呼ぶことができるのは、同じ秀丸エディタ内のみです。
newfileやsetactivehidemaruで
別の秀丸エディタに切り替わった場合は、getclipboard()は続けて呼ぶことはできません。
使用例:クリップボードの内容を$a[0〜]の配列に取り込む例 |
beginclipboardread;
#i = 0;
$a[#i] = getclipboard();
while( $a[#i] != "" ) {
#i = #i + 1;
$a[#i] = getclipboard();
}
|
クリップボード内に1行の長さが4KBを超える行があるとその行は4KBで切れてしまいます。
続きは次回のgetclipboard()で取得できます。
V8.00以降では変数そのものに4KBの制限は無いので、以下のサブルーチンで変数に入れることもできます。
ただ、変数にも最終的には約1MBの制限(動作環境で設定可能/
getmaxnifo)があり、4KBの断片で扱ったほうがいい場合もあるので、状況に応じて使い分けてください。
使用例:getclipboard()の4KBの制限を無くすサブルーチン |
beginclipboardread;
call getcliipboard2;
insert $$return;
endmacro;
//getclipboardの制限を無くすサブルーチン
getcliipboard2:
$$line = "";
while(1){
$$add = getclipboard();
if( $$add == "" ) break;
$$line = $$line + $$add;
if( strstr( $$add, "\x0a" ) >= 0 ) break;
}
return $$line;
|
クリップボードのデータを配列変数に取り込むと変数用のメモリがいっぱいになる恐れがあります。
いっぱいになってしまうと秀丸マクロの実行はその場でエラーになって中断してしまいます。
getclipboardを関数の書き方でできるのはV8.66以降からです。
V8.66未満の互換のためにキーワードとしてのgetclipboardで取得する方法もあります。
例:
$a=getclipboard;