過去の桐井戸端BBS (桐ver.8)
11145 Windows2000下でフォームからフォルダを指定してもうまくいかない pokopon 2001/05/12-00:32
Win2Kにインストールした桐の動作について、下記のような現象が出ています。
誰かお分かりになる方、ご教授や情報をいただければと思います。

フォームで、テキストボックスに「入力支援ボタン」を設定し、操作ボタンに「ファイル名選択」を指定しました。

選択値リストに
"科目の選択","TBL","科目ファイル|*.tbl",&処理科目フォルダ
と指定し、変数で開きたいフォルダを指定しています。
これは、データの種類によって、保存フォルダが変わるので、それにあわせてフォルダが変更可能な状態にしたかったからです。
変数にはフルパスで指定してあります。
例えば、
変数定義をメインで最初に行い、デフォルテとして、d:\data\としています。
フォームで目的に合わせてフォルダを選択させて変数に代入して利用しようと企んだ訳です。例えばd:\data1\ とか d:\成績\ とか。

Win98・95/Meでは、これがうまく働きます。
ファイルのあるフォルダを開いてファイルの選択画面となりますが、なぜかWin2Kでは、指定した場所を開きません。
変数を定義した状態(デフォルテのフォルダですが)となります。
また、直接フォルダ名を記述しても
"科目の選択","TBL","科目ファイル|*.tbl","d:\data1\
このフォルダを開いてくれません。

Win98・95/MeとWin2K/NT では動作仕様が違うのでしょうか?
単なる桐Win2K版の「バグ」なのか、Win2K特有の現象なのか?
このコマンドだけOSによって動作が違うのでしょうか?
ちなみに桐V8SP6です。管理工学所のFAQにも関連記述を見つけられませんでした。
また、LAN上のサーバー(WinNT)でファイルサーバーを動かし、そこにネットワークドライブを設定してデータを共有して使っています。
開発はWin98で行っていたので正常と思い、Test運用していた時、Win2Kユーザーから指摘がありました。

Win2K下で利用している方、これ以外にもOSによる桐の動作の違いがあったら教えて下さい。


11154 Re:Win2K下での桐の動作について ONnoji 2001/05/12-20:15
記事番号11145へのコメント
pokoponさん、こんばんは。ONnojiです。

こちらではWindows95環境でしか試していませんが、
ひょっとすると以下が参考になるかもしれません。
もしも的ハズレだったらごめんなさい。

テキストボックスの「入力支援ボタン」が、
"科目の選択","TBL","科目ファイル|*.tbl",&処理科目フォルダ
の時、
親オブジェクトであるテキストボックスの入力値にパス名がありませんか?
もしも、テキストボックスの入力値にパス名がある場合には、
これを消してから[入力支援]ボタンを実行すると改善しないでしょうか?

以下は桐のヘルプからの引用です。
<4.ファイルの場所>
[ファイルの場所] の既定値を指定します。通常、パス名の最後には \ をつけます(なくてもかまいません)。
この指定に関わらず、親オブジェクトのソースにファイルの場所が含まれている場合は、その場所のファイル一覧が表示されます。
定数または計算式でファイルの場所を指定すると、親オブジェクトのソースに代入されるファイル名の前にパスがつきます。
11156 Re:Win2K下での桐の動作について pokopon 2001/05/12-22:42
記事番号11154へのコメント
>テキストボックスの「入力支援ボタン」が、
>"科目の選択","TBL","科目ファイル|*.tbl",&処理科目フォルダ
>の時、
>親オブジェクトであるテキストボックスの入力値にパス名がありませんか?
>もしも、テキストボックスの入力値にパス名がある場合には、
>これを消してから[入力支援]ボタンを実行すると改善しないでしょうか?
>
>以下は桐のヘルプからの引用です。
><4.ファイルの場所>
>[ファイルの場所] の既定値を指定します。通常、パス名の最後には \ をつけます(なくてもかまいませ
>ん)。
>この指定に関わらず、親オブジェクトのソースにファイルの場所が含まれている場合は、その場所のファイ
>ル一覧が表示されます。
>定数または計算式でファイルの場所を指定すると、親オブジェクトのソースに代入されるファイル名の前に
>パスがつきます。

いつもありがとうございます。
実は、この点は試しています。が、今一度確認してみます。
この変数値には正しいパスが指定されているし、ソースにもパス名はない(確認してみた)のですが。

Win2K機は自宅には無いので、来週職場に行ってから確認し、再度レポートします。
でも、おかし〜よな〜。同じネットワーク環境で、Win98ではうまくいってWin2Kでは駄目だなんて?
桐自体の問題というよりも、OSの問題のような気がしています。
11158 Re:Win2K下での桐の動作について ONnoji 2001/05/12-23:54
記事番号11156へのコメント
pokoponさん、こんばんは。ONnojiです。

ひょっとしたらです。
ハズレていたら、ごめんなさい。

こちらではWindows95環境でしか試していませんが、
テキストボックスの「入力支援ボタン」の、
"科目の選択","TBL","科目ファイル|*.tbl",&処理科目フォルダを
"科目の選択","TBL","科目ファイル|*.tbl",#ファイル検索(&処理科目フォルダ,1)に変更した後に、
&処理科目フォルダの値を、d:\data1\ とか d:\成績\ ではなく、
d:\data1 とか d:\成績 と最後の\記号を取り除いて試してみたらいかがでしょうか?

11170 Re:残念ながら・・・・ pokopon 2001/05/14-11:40
記事番号11158へのコメント
>テキストボックスの「入力支援ボタン」の、
>"科目の選択","TBL","科目ファイル|*.tbl",&処理科目フォルダ
>を
>"科目の選択","TBL","科目ファイル|*.tbl",#ファイル検索(&処理科目フォルダ,1)
>に変更した後に、
>&処理科目フォルダの値を、d:\data1\ とか d:\成績\ ではなく、
>d:\data1 とか d:\成績 と最後の\記号を取り除いて試してみたらいかがでしょうか?
>

試しましたが、Win95/98/Me なら大丈夫ですが、Win2kはやはり駄目でした。症状は前回と同じでした。
かといって、完全に関係のない場所を開くかといえば、データのある別のフォルダをきちんと開きます。
もし、\ マークの 有無が関連するなら(間違っていれば)、フォームを立ち上げたフォルダを開くはずです。

まことに??? です。

関連があるかも知れませんが、Win2Kでは、変数管理メニューで保存と読み出しの部分において「固定」の変数の読み込みも書き込みもできません
(チェックボタンが使えません)。
もしかして、変数管理の方法がWin2kでは違うのでしょうか?
ちなみに、全て変数は「共通」で定義しています。

WinNT下ではどうなんだろう? やはり同じでしょうかね?

一応、報告まで。


11172 Re:残念ながら・・・・ ONnoji 2001/05/14-12:17
記事番号11170へのコメント
>試しましたが、Win95/98/Me なら大丈夫ですが、Win2kはやはり駄目でした。症状は前回と同じでした。
>かといって、完全に関係のない場所を開くかといえば、データのある別のフォルダをきちんと開きます。
>もし、\ マークの 有無が関連するなら(間違っていれば)、フォームを立ち上げたフォルダを開くはずです。
>まことに??? です。
>関連があるかも知れませんが、Win2Kでは、変数管理メニューで保存と読み出しの部分において「固定」の変数の読み込みも書き込み
>もできません(チェックボタンが使えません)。
>もしかして、変数管理の方法がWin2kでは違うのでしょうか?
>ちなみに、全て変数は「共通」で定義しています。
>WinNT下ではどうなんだろう? やはり同じでしょうかね?

pokoponさん、こんにちは。

職場のNT4.0SP5で二つの入力支援ボタンを作って試しました。桐はsp5とsp6。

a."科目の選択","TBL","科目ファイル|*.tbl",&処理科目フォルダ
b."科目の選択","TBL","科目ファイル|*.tbl",#ファイル検索(&処理科目フォルダ,1)

&処理科目フォルダ="d:\data1\" の時、a.は成功でb.は失敗(現在フォルダ)です。
&処理科目フォルダ="d:\data1" の時、a.も.bのどちらも成功です。

そちらの環境では&処理科目フォルダ="d:\data1" の時、
#ファイル検索(&処理科目フォルダ,1)が未定義値を返しているようですね。
これがどうしても不思議ですね。
正しいパスを返すと思うのですが・・・Windows2000では違うということですかね。

念のためですが、
"&処理科目フォルダ" と同名の変数を固有、局所、自動の変数で使っていませんか?
同名の変数があると変数の優先順位が発生してしまいます。
11181 Re:その後のテスト pokopon 2001/05/14-22:34
記事番号11172へのコメント
何度もレスをいただきまして恐縮しています。本当にありがとうございます。

>職場のNT4.0SP5で二つの入力支援ボタンを作って試しました。桐はsp5とsp6。
>
>a."科目の選択","TBL","科目ファイル|*.tbl",&処理科目フォルダ
>b."科目の選択","TBL","科目ファイル|*.tbl",#ファイル検索(&処理科目フォルダ,1)
>
>&処理科目フォルダ="d:\data1\" の時、a.は成功でb.は失敗(現在フォルダ)です。
>&処理科目フォルダ="d:\data1" の時、a.も.bのどちらも成功です。
>
>そちらの環境では&処理科目フォルダ="d:\data1" の時、
>#ファイル検索(&処理科目フォルダ,1)が未定義値を返しているようですね。
>これがどうしても不思議ですね。
>正しいパスを返すと思うのですが・・・Windows2000では違うということですかね。
>
>念のためですが、
>"&処理科目フォルダ" と同名の変数を固有、局所、自動の変数で使っていませんか?
>同名の変数があると変数の優先順位が発生してしまいます。

わざわざそちらのNT環境で試していただいたようで、スイマセン。
変数の重複、変数の種類ではありませんでした。
また、
>そちらの環境では&処理科目フォルダ="d:\data1" の時、
>#ファイル検索(&処理科目フォルダ,1)が未定義値を返しているようですね。

これでもありません。未定義なら、デフォルテのフォルダを開くはずです。

次のことを試してみました。
1.全く新しいテスト用のフォームを作成し、同様の「ファイル選択」を実行してみました。
 変数にも、全く別のフォルダを指定してみたのですが、なんと、前に作ったフォームで開いたフォルダが開きます。
ありえないフォルダを指定しても、直接フォルダをフルパスで指定しても、全く新規のフォームのはずなのに、元のフォルダが開きます。
全く「ファイル選択」が機能していないようです。
桐を再起起動しても、再インストール(桐システムフォルダをも削除した完全なインストール)をしても、改善されません。
桐側に保存されているアクセス情報は全て削除した状況でも、やはり前に開いたフォルダが開きます。

2.もしかしたら、ファイル名が悪いのかと思い(漢字を使っていましたので)、前に利用したフォルダ(毎回出てくるフォルダ)の名称を変えて実験してみました。
すると、

ただ1度だけ正常に動きます。

一度、この開いたフォルダからファイルを選択すると、その選択時に開いたフォルダが残っており、後でいくら変更しても、それらが無効となる事が判明しました。
この後で、またフォルダ名を変えると、ただ1度だけ正常に動きます。

以上のことから、これはWin2K下での桐側の「バグ」の可能性があります。WinNTで正常なのですから、桐のバグというよりも、
Win2KのOS上の問題であろうかと思います。

Win2KとNTは同系列ですが、桐が利用している変数の領域において、両者に違いがあるのでしょう。
管理工学研究所からも音沙汰がありません。現在動作確認をしているものと思われます。

また、NTシステムズという桐を使ったソフトを作っているメーカーに、ぶしつけながら同様の質問してみましたが、SE側でも開発はWin98で行い
(まだ、桐はWinNT下で不安定で確立したソフトではないということから)、Win2Kでの開発はしておらず、Win98下でのソフト開発をしているとのこと、
結論として、桐はまだ完全にWin2Kに対応し切れていないという事らしいです。
(現在、新バージョンが開発中だそうですが、こちらは完全Win2K対応らしいです)

管理工学研究所からの返答を待ってみます。その後で、またレポートします。

という事で、
本当に親身になって対応していただきましてありがとうございました。

11182 Re:その後のテスト ONnoji 2001/05/15-00:15
記事番号11181へのコメント
pokoponさんは No.11181「Re:その後のテスト」で書きました。
>わざわざそちらのNT環境で試していただいたようで、スイマセン。
>変数の重複、変数の種類ではありませんでした。

pokoponさん、こんばんは。ONnojiです。

どうも暗礁に乗り上げてしまっているようですね。

私は職場でWindowsNT4.0でしか桐V8を使っていませんので、
お気遣いは無用です。
(自宅では超低速マシンでWindows95を使用することがあります。)

>>そちらの環境では&処理科目フォルダ="d:\data1" の時、
>>#ファイル検索(&処理科目フォルダ,1)が未定義値を返しているようですね。
>
>これでもありません。未定義なら、デフォルテのフォルダを開くはずです。

しつこいですが、
代入 &文字列型変数=#ファイル検索(&処理科目フォルダ,1)
で&文字列型変数に代入された値をご確認下さい。
ここがポイントだと思っているのですが。

知人にWindows2000+桐v8で試してもらいましたが正しいパス名が代入されたそうです。
もちろん私のWindowsNT4.0+桐v8でも正しいパス名が代入されます。
そちらのWindows98マシンでも試してみてください。
違いがあると思うのですが。

変数管理のボタンが使用不可表示になるのも変ですね。
WindowsNT4.0+桐v8では問題ありません。
知人にWindows2000+桐v8で試してもらいましたが問題は無いそうです。

11187 Re:その後のテスト2 pokopon 2001/05/15-14:09
記事番号11182へのコメント
その後の続報です。

>しつこいですが、
>代入 &文字列型変数=#ファイル検索(&処理科目フォルダ,1)
>で&文字列型変数に代入された値をご確認下さい。
>ここがポイントだと思っているのですが。

はい、未定義でした。#ファイル検索を行った場合、変数には未定義値が返ってきます。

しかし、未定義値だったとした場合、開くフォルダは、wfmファイルを開いた場所となる筈ですよね。
試しに、直接#Uとおいても、Win2Kだけが別のフォルダ(前に一度だけ成功したフォルダ)を開きます。

>知人にWindows2000+桐v8で試してもらいましたが正しいパス名が代入されたそうです。
>もちろん私のWindowsNT4.0+桐v8でも正しいパス名が代入されます。
>そちらのWindows98マシンでも試してみてください。
>違いがあると思うのですが。

Win2Kのみの現象です。95・98では正常です。でも、そちらではWin2Kがうまくいっている?
本当ですか? おかしいな〜

>変数管理のボタンが使用不可表示になるのも変ですね。
>WindowsNT4.0+桐v8では問題ありません。
>知人にWindows2000+桐v8で試してもらいましたが問題は無いそうです。
>
すいません。これはこちらの勘違いでした。表もフォームも何も開いていない状態(すなわち桐だけ)での話でした。
何も開いていませんから、固有は使えませんよね。

こちらでsampleを作って見ました。
Win95/98/Me では正常に動きますが、Win2Kでは動きません。
ということで、大変不躾ですが、そちらにメールにて送付いたしますので、もし、お手間でなければ
そちらのWin2K環境内で動作確認いただければと思います。

よろしくお願いいたします。


11211 Re:Win2Kでの桐の動作について(解決編) pokopon 2001/05/17-23:58
記事番号11145へのコメント
サブタイトル「悪夢の4日間」

この入力支援ボタンにおけるファイル名入力の機能について、Win2K下ではうまく動作しないという件について、
いろいろな方からアドバイスやら他のOSによる動作確認をしていただきまして、誠にありがとうございました。
特に、親身になって解決にご尽力いただいたONnojiさんには深くお礼申し上げます。

多方面にわたるリサーチの結果、結論から申し上げましてWin2Kでは、この機能は正常に動作しません。
OSの問題(でも、桐のバグといっても仕方ないかな?)でした。
管理工学研究所にこちらで作成したサンプルを送付してトレースしてもらいましたが、次のような返答が参りました。
--------------------- 以下回答文 ------------------
ファイル名選択ウィンドウは、ウィンドウが提供する部品を使用した表示となります。
Windows2000では、OS自身がファイルのパスを保持しているようです。
このため、ウィンドウを表示する際に
桐側で積極的にパスの指示がないとき、OSが保持しているパスを指定してしまいます。
他OSでは、このような保持していないようですので、桐本来の動きである「直前のデータパス」を使用した表示となっています。
このためOSの動きに依存せず同一の動作を保持したい場合、現状では
・変数へ代入する値は必ず「定義」しておく(未定義にはしない) ←(エラーはでませんが)
・入力支援ボタンではなく、コマンドボタンを配置し、イベント処理にてファイル名入力コマンドで対応
するといった配慮が必要となります。

その後の調査で以下の点が判明しました。
Windows2000では、OS自身がデータパスを保持しており、OSが提供する
ダイアログ表示の際には、必ずそのパスを使用するようです。
このため、桐側で内部的にパス指定をしていても無効となってしまっています。
----------------------------------------------------

すなわち
桐が行っている「ファイル名入力」機能は桐自体の機能で行っているのではなく、Windowsの機能を併用しているため、
いくら変数値でパスを指定してもWindowsが保持したパスを返すために、正常に動作しないという事らしいです。
ただし、この現象はWin2Kに特有のことらしく(WinNT、Win95/98/Meでは起きません)、
OSによる内部処理がWin2Kから変わったことに原因があるようです。

■入力支援ボタンの[ファイル名入力]
■コマンドボタンの[ファイル名入力]
これらは上記の理由により、Win2Kでのみ正常に動作しません。

しかし、Win2Kでも、
■コマンドの [ファイル名入力] 
は正常に動きました。
一括処理、イベント処理では正常に動作します。
このコマンドは桐自体の機能で動作しているからだそうです。
しかし、表示ダイアログは桐で使っているのと同じで、ウィンドウ表示の際に「左側にフォルダ一覧」が表示されます。
フォルダの中身のみ(ファイルだけ)を表示させる事は、Win2Kで、ファイル名入力のコマンドはできません。

うむむ....、最初からOSが原因だとわかっていればな〜、
...... この4日間というもの、ろくに睡眠もとらず、あれこれとトレースしなおしたり、別の方法を考えたりと悪戦苦闘しましたが、結果がOSが原因とは....。

桐V8SP6は「Win2Kにも対応」とうたってはおりますが、これ以外にも問題がありそうです。
もう少しOSがこなれてきて、桐の動作が安定することを期待したいと思います。
今回の件は「桐のバグ」というよりは、WinNTから発展したWin2Kが内部の仕様を変えたことによる現象です。
一概に桐を悪者にはできません。Win95/98/Meでは、このような不都合はでませんので。


この現象以外にも、Win2Kでの不具合が出ましたら、積極的に管理工学所に連絡し、
次期「桐」では改善されていくようにしてもらいたいものです。
ユーザーも、積極的に管理工学研究所に情報を提供していきましょう。
                                          以 上

P.S.管理工学研究所のHPでも、Win2Kに関するQ&Aでも開設して欲しいですね。

戻る