一括表示

− 野ざらし言 −

[4171] ファイルクローズ時のヒストリー登録(再)

としき 2012/08/12(Sun) 01:42
http://www1.hinocatv.ne.jp/toshiki/
#2398でも同様な質問をしています。
たびたび同じ質問をすることをお許しください。

最初に気がついたのはポケ3でした。
ところが、メインマシンでも再現しています。
つまり、Vzの版はポケ3版とAT版、環境はDOS3とWinXPのDOS窓、ついでに
VTDOSでも再現することを確認しました。

かつて、TTY時代のニフティで、ちょっと開いただけですぐ閉じてしまった
ファイルもヒストリーに登録できないか、と相談したことがあります。
nifty:FGALDC/MES/13/06150(1999/09/24)です。
その際には、耳而夢斎氏より、m.gannさんのワザを教えていただきました。

8 "!Close"
  s-, &Im(pn+7,0)           ;clear bug VZ @, w_act0 ..
  ss[+, (ln==1)?&y(1) ss],  ;[;] to history all

これをCloseイベントに仕込むことにより、オープンした全てのファイルの
履歴をとることができるようになるとのことでした。
PC-98でDOSを使っていた当時は、これで不満がなくなりました。

ところが、最近、ポケ3で、オープンしてすぐにクローズしたファイルが
ヒストリーに登録されないことに気がつきました。もちろん、上記の
Closeイベントは登録してあります。
条件としては、以下のような感じです。

・入力ファイル窓に直接ファイル名を入力したときには常にヒストリーに
 登録されます。
・ファイラーから開いてすぐに閉じたときはヒストリーに登録されません。

あたかも、上記のクローズイベントが効いていないような感じです。
なんか条件があるのでしょうか。

あと、関連のありそうな追加情報。
srは39です。
vzfl.defに

1 "!Close"
  pv.103+,       ; ★ファイラーに戻るお呪い

という登録があります。


ということで、何か心当たりがある方がいらっしゃったら、なんでも結構
ですので、ヒントをいただけると幸いです。
 

[4172] Re: ファイルクローズ時のヒストリー登録(再)

めざら 2012/08/14(Tue) 20:21
[4171]へのコメント http://homepage3.nifty.com/mezala/
ちょっと実験してみてください。

起動して,ファイルを開いていない状態でファイラから拡張子が.txtのファイルを開いてください。オープン後,カーソルを動かさずに閉じます。
そのとき,ファイル名入力窓になるのか,ファイラになるのか確認します。

それはさて置き,
ファイラになったら,[ESC]を1回打って入力窓にします。
カーソルキーでヒストリを遡ります。
このとき,最初に出てくる履歴は先ほどオープンしたファイルでしょうか。

それはさて置き,
次にファイラから拡張子が.defのファイルを開きます。
オープン後,カーソルを動かさずに閉じます。
ファイラを[ESC]で閉じて入力窓にして履歴を遡ります。
直前に開いた.defファイルは履歴に残っているか確認します。

それはさて置き,
次にファイラから拡張子が.batのファイルを開きます。
オープン後,カーソルを動かさずに閉じます。
ファイラを[ESC]で閉じて入力窓にして履歴を遡ります。
直前に開いた.batファイルは履歴に残っているか確認します。

さて,実験結果はいかがだったでしょうか。


うちの環境では,.txtと.defは履歴に残り,.batは履歴に残りませんでした。
えーと,理由はまだわかりません。(^^;

[4174] Re^2: ファイルクローズ時のヒストリー登録(再)

としき 2012/08/16(Thu) 00:29
[4172]へのコメント http://www1.hinocatv.ne.jp/toshiki/
> ちょっと実験してみてください。

なかなか難しい実験ですね。

> そのとき,ファイル名入力窓になるのか,ファイラになるのか確認します。

ファイラになりました。

> このとき,最初に出てくる履歴は先ほどオープンしたファイルでしょうか。

違います。
\config.sysでした。
すなわち、「* H ヒストリー」の「:file」に登録してあるファイルです。

> 直前に開いた.defファイルは履歴に残っているか確認します。

残っていません。
ヒストリに残っていたのは\config.sysと\autoexec.batの2つだけでした。

> 直前に開いた.batファイルは履歴に残っているか確認します。

残っていません。
ヒストリに残っていたのは\config.sysと\autoexec.batの2つだけでした。

> さて,実験結果はいかがだったでしょうか。

むぅ、めざらさんのところよりも根が深いかも。
なお、上記の結果は、ポケ3、WinXPのコマンドプロンプト、VTDOSのいすれでも同じでした。

> うちの環境では,.txtと.defは履歴に残り,.batは履歴に残りませんでした。
> えーと,理由はまだわかりません。(^^;

「* E その他」のところに登録してある拡張子か否か、ということを妄想してみました。

[4175] Re: ファイルクローズ時のヒストリー登録(再)

konno 2012/08/17(Fri) 22:46
[4171]へのコメント
> あたかも、上記のクローズイベントが効いていないような感じです。

これってもしかしたら

> vzfl.defに
> 1 "!Close"
> pv.103+, ; ★ファイラーに戻るお呪い
> という登録があります。

このせいではないですか。
うちのVZFL.DEFではここはコメントにしてありました。

試しにこれを有効にして再立ち上げして試してみたら
あたかもクローズイベントが効いていないような感じになりました。

おそらくVZFL.DEFが後から読み込まれ、こちらの!Closeイベントのみが
動作しているのではないでしょうか。

BATファイルのみ登録されないのはわかりませんねぇ。
E その他 がらみなのでしょうか。

KVZのVerをちょっと疑ったりして。(^^;

[4177] Re^2: ファイルクローズ時のヒストリー登録(再)

としき 2012/08/18(Sat) 10:17
[4175]へのコメント http://www1.hinocatv.ne.jp/toshiki/
> このせいではないですか。

おおむね、あたりのようです。
vz.defの記述を変えず、vzfl.defに以下のように記述してみたら

1 "!Close"
  pv.103+,       ; ★ファイラーに戻るお呪い
  s-, &Im(pn+7,0)           ;clear bug VZ @, w_act0 ..
  ss[+, (ln==1)?&y(1) ss],  ;[;] to history all

うまくヒストリーに記録されるようになりました。
が、あれ?
ポケ3で試した範囲では、全く問題は出ていません。
が、自宅のWinXPでは、妙な挙動です。
.txt、.def、.cfg、.batというファイルは記録されるのですが、.logは記録
されません。めざらさんのところで発生しているのと類似の事象です。
これは、コマンドプロンプトとVTDOSで同事象です。
なお、私のところの「E その他」は以下のようになっています。

3  .doc .txt .bat .DEF .H .C .CPP .inc .asm .nif .fty .log .PAS .DPR .htm .CGI .AWK

念のため、.pasと.dprも試してみましたが、両方とも記録されました。
なので、大文字と小文字の違い、というわけでもなさそうです。
また、めざらさんのところで記録されない.batがうちでは記録されている
というのも謎です。

とりあえず、ポケ3で.logファイルが記録されるようになったので、当面
の問題は解決ですが、まだ少し謎が残っています。
また、イベントマクロをvz.defとvzfl.defの両方に記述するとうまく動作
しないというのも、取説どおりの動作とはいえ、はまりやすいところかも
しれません。とはいえ、両方に記述する可能性のあるイベントは!Closeの
他は!Openぐらいしかないから大丈夫かな。
 

[4178] Re^3: ファイルクローズ時のヒストリー登録(再)

めざら 2012/08/19(Sun) 11:24
[4177]へのコメント http://homepage3.nifty.com/mezala/
拡張子の問題ではなく,環境変数vzlogの設定によるのかもしれません。

こういうところはOSの環境というより,個々の端末で異なる可能性があるので,検証が厄介なところですね。

[4179] Re^4: ファイルクローズ時のヒストリー登録(再)

としき 2012/08/19(Sun) 16:12
[4178]へのコメント http://www1.hinocatv.ne.jp/toshiki/
> 拡張子の問題ではなく,環境変数vzlogの設定によるのかもしれません。

めざらさんは、vzlogの設定はどのようになっているのでしょうか。
私は、WinXPではvzlogを設定していません。
その結果が#4177の通りです。

[4181] Re^5: ファイルクローズ時のヒストリー登録(再)

めざら 2012/08/19(Sun) 22:50
[4179]へのコメント http://homepage3.nifty.com/mezala/
> 私は、WinXPではvzlogを設定していません。

 あ,予想の逆でした。
 vzlogを設定していると,履歴に残らないと予想したのですが,設定をしていなくて履歴に残らないというわけですね。
 いやいや,難しいですね。

 そういえば,VZLOGを設定していると未読の位置(新規追加分の先頭)でオープンという機能があったわけだから,ある意味,履歴に残るわけですよね。はて?

[4182] Re^6: ファイルクローズ時のヒストリー登録(再)

としき 2012/08/19(Sun) 23:54
[4181]へのコメント http://www1.hinocatv.ne.jp/toshiki/
>  いやいや,難しいですね。

いや、全く。
あと、関係あるとはとても思えないけど、私のほうではvzfl.defの9番メニューに.logが登録してない、ということくらいかなぁ。

そういえば、めざらさんのところで.batを登録してある項目を列挙していただければ、私のほうもそれに対応した部分をチェックいたしますよ。
もうそれくらいしか私に思いつくところがありませんもので。

[4185] Re^7: ファイルクローズ時のヒストリー登録(再)

konno 2012/08/20(Mon) 01:10
[4182]へのコメント
> あと、関係あるとはとても思えないけど、私のほうではvzfl.defの9番メニューに.logが登録してない、ということくらいかなぁ。

うちも登録していませんが、履歴の残らない拡張子は無いようです。
VZLOG も設定していません。

> そういえば、めざらさんのところで.batを登録してある項目を列挙していただければ、私のほうもそれに対応した部分をチェックいたしますよ。

うちは !Open イベントに拡張子別の設定をたくさん入れていますが
特に影響はないようです。
としきさんのところではどうでしょうか。

[4186] Re^8: ファイルクローズ時のヒストリー登録(再)

konno 2012/08/20(Mon) 01:40
[4185]へのコメント
やしきの家探しをしたら、ポケ3のVZ.DEFでは
Bv1024 ;ログファイル履歴バッファサイズ ##1.6

なのに、母艦のほうでは
Bv0
になっていますね。

[4187] Re^9: ファイルクローズ時のヒストリー登録(再)

としき 2012/08/20(Mon) 22:30
[4186]へのコメント http://www1.hinocatv.ne.jp/toshiki/
> なのに、母艦のほうでは
> Bv0
> になっていますね。

vzlogを設定していないから関係ないと思っていました。
念のため、Bv1024にしたら、「メモリが足りません」で起動できません。
Bv512でもダメ、Bv256なら立ち上がりました。
でも、.logファイルは履歴に残ってくれませんでした。

[4190] Bv?

konno 2012/08/21(Tue) 00:16
[4187]へのコメント
> vzlogを設定していないから関係ないと思っていました。

うう、もしかして全然関係なかったですか、失礼しました。m(__)m

ちなみに、main.asm を見ると
	mov	ax,logtblsz      ;Bv
	cmp	ax,MIN_LOGTBL    ;128bytes
_if b
	mov	ax,MIN_LOGTBL

とあるので、Bvが128以下でも内部的には128bytesは使っているかも。
でもBv0の場合はlog履歴の読み書きはスキップするみたいに見えます。

[4191] Re^9: ファイルクローズ時のヒストリー登録(再)

konno 2012/08/21(Tue) 01:07
[4186]へのコメント
うちの場合、履歴に残らない条件がありました。

拡張子付きのファイルで1行で0〜数文字の場合は履歴に残らない。
これは2行目にいけないから当然と言えば当然ですね。

逆に拡張子が無いファイルは0文字だろうが1行だろうが履歴に残る。

皆さんのところではどうでしょうか。

[4192] Re^10: ファイルクローズ時のヒストリー登録(再)

としき 2012/08/21(Tue) 22:44
[4191]へのコメント http://www1.hinocatv.ne.jp/toshiki/
> 逆に拡張子が無いファイルは0文字だろうが1行だろうが履歴に残る。

うちでは、拡張子がないファイルで履歴に残らないものがありました。
また、履歴に残ったことは残りましたが、

・「D:\NNN」という0バイトのファイルをあらかじめ作っておく
・WinXPでコマンドプロンプト起動
 カレントディレクトリは「C:\DOCUME~1\OWNER」
・Vz常駐
・ファイラーから「D:\NNN」を選択してオープン
・そのまま何もせずにクローズ

→なんと、ヒストリーにはドライブもディレクトリも無しで、しかもその上なぜか小文字で「nnn」というファイルが記録されている!
当然、カレントディレクトリにはこういうファイルはないから、ヒストリーからオープンすることはできない。

という、謎な状況まで発生してしまう始末。
やはり、相変わらずというか、何がなんだか。

konnoさんのところでは状況が発生していないわけですから、追いかけようがないですよね。
あとは、めざらさんのところでの.batが履歴に残らないという状況が数少ない手がかりな訳ですが、その後何かわかったことがあったでしょうか。

お〜い、めざらさ〜ん(^^;

[4193] Re^11: ファイルクローズ時のヒストリー登録(再)

めざら 2012/08/22(Wed) 21:10
[4192]へのコメント http://homepage3.nifty.com/mezala/
> お〜い、めざらさ〜ん(^^;

 いやー,全然わからなくて困ってます.
 もう少し規則性があるのではないかと思ったのですけど…

[4194] Re^12: ファイルクローズ時のヒストリー登録(再)

としき 2012/08/22(Wed) 22:42
[4193]へのコメント http://www1.hinocatv.ne.jp/toshiki/
>  いやー,全然わからなくて困ってます.

ありゃ、まぁ。
どこぞのコメディアンじゃありませんが「ダメだこりゃ」でシメるしかないかなぁ。

[4188] Re^8: ファイルクローズ時のヒストリー登録(再)

としき 2012/08/20(Mon) 22:53
[4185]へのコメント http://www1.hinocatv.ne.jp/toshiki/
> うちは !Open イベントに拡張子別の設定をたくさん入れていますが
> 特に影響はないようです。
> としきさんのところではどうでしょうか。

.logに関する設定は入れていません。


さて、その後さらに追及して、妙なことが判明しました。
なんと、.logファイル全般がヒストリーに記録されないわけではなく、ある特定の.logファイルのみが記録されないのです。
これはもう、全く、何がなんだか分かりません。
具体的には、以下のような感じです。


その1.
コマンドプロンプト実行
カレントディレクトリは「C:\DOCUME~1\OWNER」
カレントディレクトリは移動させずに
D:\A.LOG
C:\DOCUME~1\OWNER\デスク~1\A.LOG
C:\DOCUME~1\OWNER\デスク~1\VTDOS128\VTD_ERR.LOG
上記3つのファイルはヒストリーに記録されるのに、別のディレクトリの
C:\DOCUME~1\OWNER\デスク~1\VTDOS122\VTD_ERR.LOG
このファイルは記録されない。
カレントディレクトリを移動させても、試した範囲では状況変わらず。

その2.
VTDOS1.22実行
カレントディレクトリは「C:\DOCUME~1\OWNER\デスク~1\VTDOS122」
カレントディレクトリは移動させずに
D:\A.LOG
C:\DOCUME~1\OWNER\デスク~1\A.LOG
C:\DOCUME~1\OWNER\デスク~1\VTDOS128\VTD_ERR.LOG
上記3つのファイルはヒストリーに記録されるのに、別のディレクトリの
C:\DOCUME~1\OWNER\デスク~1\VTDOS122\VTD_ERR.LOG
このファイルは記録されない。
ところが、カレントディレクトリを1つ上の階層の「C:\DOCUME~1\OWNER\デスク~1\」に移動させると
C:\DOCUME~1\OWNER\デスク~1\VTDOS122\VTD_ERR.LOG
このファイルもヒストリーに記録される。


もう、何がなんだか分かりません。
こういう状況だと、めざらさんの.batが記録されないというのも、もしかしたら別ディレクトリにあるファイルだったら記録されたりして。

[4183] Re: ファイルクローズ時のヒストリー登録(再)

としき 2012/08/20(Mon) 00:33
[4171]へのコメント http://www1.hinocatv.ne.jp/toshiki/
関連質問です。

#L(クローズ・オープン)を使ってファイルを閉じると、

> 8 "!Close"
> s-, &Im(pn+7,0) ;clear bug VZ @, w_act0 ..
> ss[+, (ln==1)?&y(1) ss], ;[;] to history all

このイベントマクロを使ってもヒストリーに記録されないような挙動を示しています。というか、カーソル位置がファイル末尾であってもヒストリーに記録されない感じ。
そこで、クローズ・オープンを使った場合でもヒストリーに記録されるようにするにはどうしたらよろしいでしょうか。

仕様的に無理なのかなぁ。
どなたか、お知恵をお貸しいただければ幸いです。

↑ このページの先頭