[リストへもどる]
一括表示

タイトルスクリプトモジュール間での挙動の違いについて
記事No4551
投稿日: 2024/07/02(Tue) 21:13
投稿者tm
いくつかPPx.StayModeの挙動の違いがあるので報告します。

1. qjsではPPx.StayMode以降に書かれたPPx.linemessage()が
実行されない

//!*script
PPx.linemessage(1);
PPx.Echo(2);
PPx.StayMode = 2;
PPx.linemessage(3);
PPx.Echo(4);

実行結果:
(wsh,cv8)
linemessage "1"
Echo "2"
linemessage "3"
Echo "4"
(qjs)
linemessage "1"
Echo "2"
Echo "4"

2. qjsでは初回実行時にppx_resume()を実行したときにマクロの
結果を得られない

//!*script
PPx.StayMode = 2;
function ppx_resume() {
PPx.Echo(PPx.Extract('%n'));
}
ppx_resume();

実行結果:
(wsh,cv8)
初回: Echo "<ppcid>"
二回目以降: Echo "<ppcid>"
(qjs)
初回: Echo ""
二回目以降: Echo "<ppcid>"

3. qjsでは*script :<関数式>,<scriptname>を実行したときに
エラーがでる

//!*script
PPx.StayMode = 2;
var a = function() { PPx.StayMode = 0; }
var b = function b() { PPx.StayMode = 0; }
function c() { PPx.StayMode = 0; }

wsh,cv8では関数式、関数宣言のどちらでも動作します。
qjsはcのみエラーがでません。a,bはエラーがでますが、
実行自体はされているような気がします。


あともう一点、PPx.report()の結果に差異があります。

//!*script
PPx.report(1,2); a
PPx.report([1,2]); b

(wsh)
a: エラー
b: 1,2
(qjs)
a: 1,2
b: 1,2
(cv8)
a: エラー
b: Microsoft.ClearScript.V8.V8ScriptItem+V8Array


タイトルRe: スクリプトモジュール間での挙動の違いについて
記事No4554
投稿日: 2024/07/03(Wed) 23:14
投稿者TORO
1. 2. のどちらも常駐状態に切り替えるときにミスをしたためと
おもわれます。次版で対応する予定です。

3. は現在再現できていません。

PPx.report については、今のところ単一パラメータ対応なので
a: はエラーとなります。 qjs だけ複数パラメータ対応が容易なので
対応しています。

b: については Clear Script 側に問題あるのですが、
こちら側の対応は難しそうです。 [1,2].toString() を使って
回避する必要があります。


タイトルRe^2: スクリプトモジュール間での挙動の違いについて
記事No4558
投稿日: 2024/07/04(Thu) 21:14
投稿者tm
> 3. は現在再現できていません。
>
> PPx.report については、今のところ単一パラメータ対応なので
> a: はエラーとなります。 qjs だけ複数パラメータ対応が容易なので
> 対応しています。
>
> b: については Clear Script 側に問題あるのですが、
> こちら側の対応は難しそうです。 [1,2].toString() を使って
> 回避する必要があります。

3.ですが、こちらでも再現しませんでした。
いろいろ試している途中だったので関数内で別のエラーが
でていたのを勘違いしたんだと思います。
お手数を取らせてすみませんでした。

PPx.reportの仕様は了解しました。


タイトルRe: スクリプトモジュール間での挙動の違いについて
記事No4561
投稿日: 2024/07/07(Sun) 14:10
投稿者tm
> いくつかPPx.StayModeの挙動の違いがあるので報告します。
>
> 1. qjsではPPx.StayMode以降に書かれたPPx.linemessage()が
> 実行されない
>
> //!*script
> PPx.linemessage(1);
> PPx.Echo(2);
> PPx.StayMode = 2;
> PPx.linemessage(3);
> PPx.Echo(4);
>
> 実行結果:
> (wsh,cv8)
> linemessage "1"
> Echo "2"
> linemessage "3"
> Echo "4"
> (qjs)
> linemessage "1"
> Echo "2"
> Echo "4"
>
> 2. qjsでは初回実行時にppx_resume()を実行したときにマクロの
> 結果を得られない
>
> //!*script
> PPx.StayMode = 2;
> function ppx_resume() {
> PPx.Echo(PPx.Extract('%n'));
> }
> ppx_resume();
>
> 実行結果:
> (wsh,cv8)
> 初回: Echo "<ppcid>"
> 二回目以降: Echo "<ppcid>"
> (qjs)
> 初回: Echo ""
> 二回目以降: Echo "<ppcid>"

T7で修正されているのを確認しました。ありがとうございます。