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

投稿時間:2004/07/01(Thu) 14:51
投稿者名:まんたろー
URL :
タイトル:
配列サイズのReDimとコンパイル時の最適化
こんにちは。
初めて遭遇した事象について報告します。
配列サイズを頻繁に変更するロジックを含んだActiveXコンポーネントを作成しました。
DegugモードでテストしてOKっと思って、コンパイルしてみました。
すると、コンパイル版の結果が違うじゃないですか!!
調べてみると、配列を、あるFunctionに渡すところで、渡す前と後の配列のサイズが変わってしまっ
ているんです。

いろいろコードを修正してみましたが、デバッグとコンパイル後の結果があいません。
ふと、昔、Cでプログラム組んだときOptimizeオプションによって結果が微妙に違ったことを思い出し

(配列サイズではないですが、浮動小数点演算で)最適化オプションを”コードの実行速度の最適化
”から”最適化なし”に変更しました。
すると、結果が一致したのです。いったい何をやってるんですかね?最適化してくれるのは結構なの
ですが、結果が変わってしまうのは困りますよね。

投稿時間:2004/07/02(Fri) 11:05
投稿者名:ぴろあき
Eメール:
URL :
タイトル:
Re: 配列サイズのReDimとコンパイル時の最適化
最適化の詳細設定の項目がいくつかありますが、
『配列の範囲チェックを削除』と、
『浮動小数点を丸めない処理を許可』
が働いているようですね。

浮動小数点の方はともかく、
配列の方はあくまでもエラーチェックを外すだけのようですから、
どこかプログラムにミスがあるような気がします。

具体的な提示が無いのでわかりませんが、
例えば、Option Base 1としているのに、
DB = MSComm1.Input
などとした場合DB(0)から値が入ります。

ま、これはプログラムのミスというよりは、
VBのバグというか特性といった類のものですが、
こういう事を知らずに、
LBoundやUBoundで配列を処理していると、
思っている結果と違ってしまう事もあるのではないかと思いました。