|
>>「dllfunc関数用のパラメータ文字列用バッファがいっぱいです」
>>は、秀丸エディタ自身が出しています。
>>文字列パラメータの総計バイト数が1024を越えると出ます。
”総計”ですか。
##p2 = strlen($$p2); ##p3 = strlen($$p3);
##total = strlen($$p1) + ##p2 + ##p3;
if( (##total <= 1024) && (##p2 >= ##p3) ){
// (##p2 < ##p3) で、戻り値が大きくなるのは平気?
$$ret = dllfuncstr("GSUB",$$p1,$$p2,$$p3,-1);
}else{
call MacroDeYatteKudasai $$p1,$$p2,$$p3;
$$ret = $$return;
}
すこし悲しい。(;_;)
ではでは。
蛇足。
(##p2 < ##p3) の場合、戻り値の上限を調べます。
$$dengaku = hidemarudir + "\\dengakudll.dll";
if( $$dengaku != loaddllfile ){
loaddll $$dengaku;
if( ! result ){ beep; endmacro; }
}
$$p1 = "012345678901234567890123456789 ... という具合に1000バイト";
$$p2 = "0";
$$zero = "000000000000000000000000000000000000000000000000";
##zero = strlen($$zero);
##p3 = 2;
while( ##p3 <= ##zero ){
$$p3 = leftstr($$zero,##p3);
$$ret = dllfuncstr("GSUB",$$p1,$$p2,$$p3,-1);
##ret = strlen($$ret);
insert str(##ret) + "\n";
##p3 = ##p3 + 1;
}
beep;
endmacro;
実行結果。
1100
1200
1300
1400
1500
1600
1700
1800
1900
2000
2100
2200
2300
2400
2500
2600
2700
2800
// 2800バイトでした。
|
|