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

タイトル各種 Script Module の更新
記事No4519
投稿日: 2024/06/15(Sat) 23:27
投稿者TORO
Script Module の WSH版 R21+3、V8版 R3+4、QuickJS版 T5 を
公開しました。

・PPx.Entry.IndexFrom() の追加に伴い、PPx.Pane.IndexFrom と
 PPx.Pane.Tab.IndexFrom をプロパティから関数に変更しています。
WSH版は プロパティ/メソッドのどちらでも使用できます。

・import の代用として使える PPx.Include を追加しています。
 import ではなくただの eval ですが、非モジュール時
 でも使用でき、エラー時に元の場所が分かるようになっています。

・PPx.CreateObject のイベント対応を強化しています。

・PPx.StayMode = 2 の常駐処理を用意しました。
 R11 で一旦無効化していた、以前の WSH 版とは挙動が違うため
 注意が必要です。

その他、色々調整を行っています。


タイトルRe: 各種 Script Module の更新
記事No4521
投稿日: 2024/06/16(Sun) 11:36
投稿者tm
QuickJS ModuleのPPx.Executeの戻り値が0になっているのを
確認しました。修正ありがとうございます。

PPx.StayModeが更新されていたので少し試していて、いくつか
バグっぽいのを見つけたので報告します。

1. ppx_resume関数が設定されていないスクリプトに
PPx.StayMode=2を設定し、
*script hoge.js
*script hoge.js
のように、二度目以降の呼び出し時にメソッドを指定しないと
PPcが落ちます。標準とchakra.dllどちらでも発生しました。
CV8、QuickJSでもエラーが発生しますがこちらは落ちません。

2. 関数に"var"以外の変数宣言をしたとき、メソッドとして
認識されないようです。
var funcV = () => PPx.Echo('var') //認識される
const funcC = () => PPx.Echo('const') //認識されない
let funcL = () => PPx.Echo('let') //認識されない
こちらも各スクリプトモジュールで確認できました。


タイトルRe^2: 各種 Script Module の更新
記事No4524
投稿日: 2024/06/16(Sun) 22:13
投稿者TORO
1. については再現しました。次版で修正します。

2. についても再現しました。
あとで調べてみようと思いますが、現在は各モジュールの1度目の
実行完了時に、グローバルスコープを一旦抜けています。

const / let がグローバルスコープという"ブロック"内のみ
有効であるとするなら、一旦グローバルスコープを抜けた後の
2度目以降の呼び出し時はアクセスできない、と扱われている
気がします。

その場合は、var で定義したグローバルオブジェクトのみ
アクセス可能という仕様になると思います。


タイトルRe^3: 各種 Script Module の更新
記事No4525
投稿日: 2024/06/16(Sun) 23:17
投稿者tm
> const / let がグローバルスコープという"ブロック"内のみ
> 有効であるとするなら、一旦グローバルスコープを抜けた後の
> 2度目以降の呼び出し時はアクセスできない、と扱われている
> 気がします。
>
> その場合は、var で定義したグローバルオブジェクトのみ
> アクセス可能という仕様になると思います。

なるほど。そういう理由ならconst/letが使えないのは納得です。

StayModeとは違うのですが、PPx.DirectoryTypeのaux:が(11)に
設定されていないような気がします。
FileSystem上のaux(1), ListFile上のaux(4)は以前と同じ値でした。
localとremote、aux内部コマンドからの実行なども試しましたが、
11を返す条件がわかりませんでした。
cab(61)は確認できました。

window10 64bit PPx197+1 WSH Script Moduleで確認しました。


タイトルRe^4: 各種 Script Module の更新
記事No4526
投稿日: 2024/06/18(Tue) 22:04
投稿者TORO
確認してみたところ、関数名を直接指定する形式は、const / let の
関数を参照できないようです。このため、関数名を指定する場合は、
var が必要になると記載することにします。

一方、*script ":10000",filename や *js ":10000","funcname()"
の場合は、const / let が付いた関数でも使用できました。
尚、V8版は「":10000",filename」形式がバグで使えません。

あと、現在気づいているバグとして、関数の呼び出しに失敗した
ときの挙動がおかしいこと、ppx_finally の取り扱いがおかしい
こと、再入対策に失敗していることが見つかっています。



PPx.DirectoryType についてですが、パスの種類ではなく、
エントリ一覧の取得に用いた種類になるため、aux: パスであっても
11 にはなりません。aux: かどうかの判定はパスの頭が aux: か
どうかで判定してください。


タイトルRe^5: 各種 Script Module の更新
記事No4527
投稿日: 2024/06/19(Wed) 21:24
投稿者tm
> 確認してみたところ、関数名を直接指定する形式は、const / let の
> 関数を参照できないようです。このため、関数名を指定する場合は、
> var が必要になると記載することにします。
>
> 一方、*script ":10000",filename や *js ":10000","funcname()"
> の場合は、const / let が付いた関数でも使用できました。
> 尚、V8版は「":10000",filename」形式がバグで使えません。
>
> あと、現在気づいているバグとして、関数の呼び出しに失敗した
> ときの挙動がおかしいこと、ppx_finally の取り扱いがおかしい
> こと、再入対策に失敗していることが見つかっています。
>
>
>
> PPx.DirectoryType についてですが、パスの種類ではなく、
> エントリ一覧の取得に用いた種類になるため、aux: パスであっても
> 11 にはなりません。aux: かどうかの判定はパスの頭が aux: か
> どうかで判定してください。

StayMode用の関数はvarで宣言すると憶えておけば問題なさそうです。
aux: のほうも了解しました。


タイトルRe^6: 各種 Script Module の更新
記事No4530
投稿日: 2024/06/23(Sun) 08:28
投稿者tm
ppxscr21p4でppx_resume未登録でも落ちなくなったのを確認しました。
修正ありがとうございます。