Top > OOobbs2 > 111

OOobbs2/111 Edit

  • サマリ: 困ったものだ(配列の変数名に関する謎)
  • 環境: Other
  • 状態: 未解決
  • 投稿者: ponkan?
  • 投稿日: 2008-06-19 (木) 19:13:12

質問 Edit


sub test82
dim tmp
tmp(18) = "temp"
tmp(5) = 5
msgbox tmp(7)
end sub


さて、上記のスクリプトはエラー無しで実行出来るが
何処に問題が有り、改善するべきなのは何であろうか?
始末に終えないのは、エラーを吐かない事であり
如何にもピュアに動作する事であるが
全く持って{ュ}が抜かってるだろうとか、愚痴ってみたりする。

dim tmpを
dim tmp(20)とかに変更すれば、仕様どおりではあるが
変数名の処理ぐらいは、その辺を考慮しないものだろうか?・・・と思う

回答 Edit

  • Variant 型だからだと思ったら、dim tmp as string にしても同じですね。Option Explicit などを指定してもエラーにならない。 -- はにゃ? 2008-06-19 (Thu) 20:25:04
  • 最近、思いましたが、変数宣言はきちんとすべきですね。ある拡張機能で動かないというバグ報告をもらいましたが、同じ環境 (OpenSUSE 8 KDE、OOo official、unofficial 2.3、2.4) を用意しても再現できないという。
    API のメソッドが時々 Null を返したりすることがありますが、適当に受け取って IsNull などで調べてあったわけです。一方、Option Explicit を宣言してあると Null は Object、Variant 型でしか受け取れません。なぜか、その人の環境ではその部分の機能だけが働いていたらしく、全て変数を宣言してなんとか解決。もちろん Option Explicit 宣言なんてしてませんでしたが。
  • はにゃ? 2008-06-19 (Thu) 20:26:46
  • 最近は益々意地でも変数宣言をしないように心がけております。取敢えず動作確認した後で、宣言部を削って動かすのが楽しみのひとつでも有ります。上記の例の場合で問題なのは構造体とかの定義の場合に発生します。 -- ponkan 2008-06-19 (木) 21:05:12
  • 私も以前は宣言してたんですけどね。面倒くさくなって、改行なくすと 3000 行くらいのマクロでもう、ね。まぁ、普通は配列だけ宣言すれば問題ないですけど。変数関連では Global で Type を利用したりすると値が消えたり、static 変数の値が保持されなかったりとか色んなバグもありますし。 -- はにゃ? 2008-06-19 (Thu) 22:19:54
  • ぃやぁ、口が裂けないと仕様としか言えない弱気なponkanです。・・・枝葉末節は置いておいて、メモリ参照渡しと値渡しの区別だけは、しっかり分けて貰わないと爆発するかも知れないと思うこの頃。 -- ponkan 2008-06-20 (金) 19:31:36
  • 参照渡しの記述はいちおう、ヘルプに記載されてますけどね。ヘルプよく読んでませんけど。 -- はにゃ? 2008-06-20 (Fri) 19:49:54

感想,コメント,メモ Edit



Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes