Indexへ
(7622)//【7631】→(7637)
------------------------
【タイトル】【要望】閲覧専用+自動更新モード
【記事番号】 7631 (*)
【 日時 】06/08/12 06:31
【 発言者 】L

作者様。お世話になります。いつも便利に使わさせて頂いてます。

同じファイルを同時に開いて、正、副の様に使うことが多いのですが、
いつも思うのが、両者の同期を(手動で)とるのが面倒という事です。
正側の変更を自動的に副側に反映できればよいのですが・・・
具体的には、副側がアクティブになったときに、現在のファイルが更新されて
いた場合、確認のダイアログ無しに(これが閲覧専用の理由です)、表示範囲は
そのままで、自動的に読み込んでくれると非常に有難いです。
実は、宮西氏のshがこの仕様で、以前、DOS版優勢の頃、win版と併用
していた記憶があります。

他に、拡大縮小計測程度ができて自動更新できるようなビューアーがないかと探してみましたが、ありませんでした。

もしよろしければ、検討してみてはいただけませんでしょうか。


Indexへ
(7631)←【7637】→(7640)
------------------------
【タイトル】Re(1):【要望】閲覧専用+自動更新モード
【記事番号】 7637 (7631)
【 日時 】06/08/12 18:15
【 発言者 】joker
【 リンク 】http://www.atsmile.com/jw/



▼Lさん:

JWWは1アプリ1データですので、2つJWWを起動して同じファイルを読み込んだ
としても、2つのJWWがメモリに取り込んだデータはそれぞれ確保した動的メモリ
に入れられますので、ちょっと無理があるような気はします。
一方のJWWは、もう一方のJWWを知りませんから、あっちのメモリを勝手に参照
して反映するかどうかを考える、なんて事は出来ないと思います。

実現するには色んなパターンはあると思いますが、
1)MDI方式
1つのJWWで、複数のデータを持てるようにする事です。
プログラムの修正は結構大変な事になってくるような気はします。

2)データをオンメモリではなく、オンディスクにする
データファイルを読み込んで、一時ファイルを作成し、そのファイルへの
読み書きをするようにします。但し、ディスクへの読み書きは、
メモリへの読み書きと比べて、何十〜何百・何千倍も遅いので(メディア依存)
操作が重たくなると思います。(いわゆる仮想メモリです)

3)割り込みで通信機能を付ける
他のJWWから、「データの読み込みをさせてくれ」という信号が来たら、
そのJWWへ現在のデータを出力する、というような機能を付ける。
信号が来ているかどうかは、タイマ割り込み等で監視をします。
データを出力している間は、そのJWWでの操作は出来ないと思います。
でもまぁその際は、「副」のJWWから 同期データを出力しろ、という
コマンドを発行させているはずですので、「主」のJWWを操作している訳では
ありませんから、然程問題にならないかもしれません。

割り込みが無理であれば、例えば、自動保存ファイルを明示的に、
あるボタンを押せば作成する、というようなことをして、
「副」の方で、自動保存ファイルを読み込むようにして、
何らかのボタンを押せば、自動保存ファイルを読み直す、というような
まぁかなり手動的ではありますけれど、いちいちファイルを指定して読むよりは
楽になるかもしれないですね。(^^;;
あと、自動保存ファイルを読み込んだ場合には、書き込み出来ないようにする、
というような仕組みは必要かもしれませんし、
その他、プログラム的な破綻をしないような、考えないといけない事があるかも
しれませんけれど。


Indexへ
(7637)←【7640】//(7632)
------------------------
【タイトル】Re(2):【要望】閲覧専用+自動更新モード
【記事番号】 7640 (7637)
【 日時 】06/08/13 00:32
【 発言者 】L

▼jokerさん:
レスありがとうございます。

やっぱり、2つのJWW間での完全な同期、というのは無理がありますよね。

>1)MDI方式
>プログラムの修正は結構大変な事になってくるような気はします。
やっぱり、真っ先に思い浮かぶのは、MDI化ですよね。
MDIならプロセス間の通信無しで、ドキュメント間の同期が容易。
主副(正副と書きましたけどこちらの方がいいですね)どころか、
両者を対等に扱うことができる。
でも、SDIからMDIにするのは、プログラムを根本から見直す必要があると
思うので、とてもじゃないですけど、そんな要求できません。
SDIにはSDIの利点がありますので、SDIのままでいいと思います。
あと、うちの環境はマルチ画面を使ってはいますが、ふたつのディスプレイで
解像度が違うので、別々のプロセスが必要なのです。


>割り込みが無理であれば、例えば、自動保存ファイルを明示的に、
>あるボタンを押せば作成する、というようなことをして、
>「副」の方で、自動保存ファイルを読み込むようにして、
>何らかのボタンを押せば、自動保存ファイルを読み直す、というような
>まぁかなり手動的ではありますけれど、いちいちファイルを指定して読むよりは
>楽になるかもしれないですね。(^^;;
前回提案したのは、これに近いです。
少し言い方を変えますと、
副側のJWWを巨大なボタンに見立て、副側のAactivateイベント割り込みに、
最新の読み込んだときのファイルと現在のファイルとでタイムスタンプを比較し
新しければ、ダイアログ無しに、ファイルを読み直す、という記述をする。
ここで、更新前後で表示する範囲が変わらなければ尚良い。
もちろん主側は通常モードで、副側は閲覧専用モードとします。

確かに、手動的ですが、用途的にはこの程度で十分です。
主側でのファイルの更新はCTRL+Sで上書すれば目をつぶってもできますし、
副側を見る時には大抵マウスカーソルも副側に動かしますので、ボタンを
押すためのカーソル移動というのも苦になりません。ボタンそのものも
巨大なので、カーソル合わせも苦になりません。
副側は閲覧専用なので、副側で行った変更も残しておく必要が無いので、
確認のダイアログも必要ありません。
(これは余談ですが)主、副の順に終了したときに、誤って、副の内容で
上書きしそうになることもありません(^^;;
以上の様な操作で、閲覧専用という利用形態での特性を考慮すれば、操作者
側のストレス無く、擬似的な同期が実現できると思います。

主副間での通信も、両者を管理するプロセスも必要ありません。2つのJWW
は、あくまでも独立したままでいることができます。
欠点は、副側を見る直前にファイルを読み込むので、大きなデータには向
かない。用途的に、主側で保存した直後に副側で読み込むことになるので、
両者が重ならないようにしなければならない。あと、あくまでも擬似的な
同期なので、見た目があまりよろしくない(^^;; といったところでしょ
うか。
起動方法は、コマンドラインオプション(定番の/Rあたり。エクスプローラー
上で送るからの起動を想定)、主側のファイルメニューからの別プロセス起動、
あたりが良いと思います。

>あと、自動保存ファイルを読み込んだ場合には、書き込み出来ないようにする、
>というような仕組みは必要かもしれませんし、
>その他、プログラム的な破綻をしないような、考えないといけない事があるかも
>しれませんけれど。
確かに、その辺は考慮しなければならないかもしれませんね。何とか、現状を
崩さずに実現できないか、と考慮したつもりですけど、何がおこるかわからない
というのはよくあることですから。

以上ですが、もしよろしければご検討下さい。