From 04:00 PM CDT – 08:00 PM CDT (09:00 PM UTC – 01:00 AM UTC) Tuesday, April 16, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

boolの判定結果に付いて


初めまして、竹内@シースペースといいます。

ブールの判定結果が期待する結果と違うので報告させていただきます。
尚ね使用バージョンはLabVIEW 7.1/USです。JPバージョンでも同じだと思いますので確認願います。

問題となっているのは、And Array Elementsの結果です。
入力に長さゼロのブール配列を接続すると出力がTRUEとなります。期待する出力はFALSE。
前段の処理として、ユーザーによる入力が無かった場合(Error)の判断として用いたいですが、現状は少し工夫が必要なようです。

これは既知の不具合として認知されている事なのでしょうか?長さ1以上のブール配列が入力に接続されている場合の出力は期待通りです。

以上、皆さんのご意見又はNIさんからの回答をお願いいたします。
0 件の賞賛
メッセージ1/6
6,344件の閲覧回数

日本ナショナルインスツルメンツ技術部の長久と申します。

竹内様が仰る動作は確認いたしました。
この動作が過去に報告されているかにつきましては
弊社にてご確認させていただきまます。

現状況としましては、添付いたしましたVIを使用していただければ
ご希望の動作が可能かと存じます。

0 件の賞賛
メッセージ2/6
6,324件の閲覧回数

この動作が、人間の感覚でいうと不具合ですが、プログラミング上
不具合かどうかというと、必ずしもそうではないかも知れません。

というのは、And Array Elementsを組もうとすると、普通は、
最初にTrueを用意しておいて、そこに配列の要素を次々とループ内で
Andしていくことで、「要素全体の総andをとる」と思うので、
配列の要素が空だと、最初に用意したTrueだけがそのまま残って
出力になると思われます。

というわけで、同じく、数値関数の「Multiply Array Elements」
(Π記号のアイコン)で、空の配列をつないだところ、
出力は「1.00」になりました。おそらく、上記と同様に、
最初に1.00を用意しておいて、そこに配列の要素を次々と
掛け算していくことで、「要素全体の総乗をとる」という
ことをしていると思われます。この場合も、配列が空だと
最初の1.00だけが残ってそのまま出力になるので、こういう
結果になると思います。

従って、不具合というより、プログラミング不足(例外判定不足)、
といった感じでしょうか。

0 件の賞賛
メッセージ3/6
6,309件の閲覧回数

自己レスポンスです。

>従って、不具合というより、プログラミング不足(例外判定不足)、
>といった感じでしょうか。

ここでいうプログラミング不足とは、竹内様のプログラミング
不足という意味ではなく、NI殿において当該ルーチンを作成した際の
例外判定不足、、、、という意味で書かせて頂きました。

あるいは、この部分が現状どおりであった方が、何らかの形で
汎用性があって好ましいのであれば(空の配列なら、True、
もしくは、1.00が返った方が良い場合)、And Array Elementsと
Multiply Array Elementsのオンラインマニュアルに注記として
そのような説明があるほうが良いと思われます。

0 件の賞賛
メッセージ4/6
6,308件の閲覧回数

下記の意見に賛成です。



"白石" <shiraishi.masayuki@nikonoa.net> wrote:
>
>この動作が、人間の感覚でいうと不具合ですが、プログラミング上
>不具合かどうかというと、必ずしもそうではないかも知れません。
>
>というのは、And Array Elementsを組もうとすると、普通は、
>最初にTrueを用意しておいて、そこに配列の要素を次々とループ内で
>Andしていくことで、「要素全体の総andをとる」と思うので、
>配列の要素が空だと、最初に用意したTrueだけがそのまま残って
>出力になると思われます。
>
>というわけで、同じく、数値関数の「Multiply Array Elements」
>(Π記号のアイコン)で、空の配列をつないだところ、
>出力は「1.00」になりました。おそらく、上記と同様に、
>最初に1.00を用意しておいて、そこに配列の要素を次々と
>掛け算していくことで、「要素全体の総乗をとる」という
>ことをしていると思われます。この場合も、配列が空だと
>最初の1.00だけが残ってそのまま出力になるので、こういう
>結果になると思います。
>
>従って、不具合というより、プログラミング不足(例外判定不足)、
>といった感じでしょうか。
>

0 件の賞賛
メッセージ5/6
6,309件の閲覧回数

早々の回答ありがとうございました。

実務多忙の為、投稿したことさえ忘れておりました。
作業自体の解決方法は、投稿段階で完了しておりますので何ら支障はありません。

私の懸念する内容は全て白石様の指摘されている内容にて表現されておりますので、後はNIさんの判断に期待しております。

改めて、皆さんの適切な回答に感謝します。

0 件の賞賛
メッセージ6/6
6,282件の閲覧回数