VBのVariantってどうよ。
■ このスレッドは過去ログ倉庫に格納されています
0001VBマニア
NGNGa = Split("1,2,3", ",")
は型不一致エラーになるのに
Dim a As Variant
a = Split("1,2,3", ",")
は型不一致エラーにならない。
こんなVariant型ってなんか不思議?
それとも常識?
00072
NGNG0008デフォルトの名無しさん
NGNGコードの見通しもよくなる。
ただし、それもまた至難の業(笑)。
0009デフォルトの名無しさん
NGNGどうせシャープのポケコンでPJのゲームやってただけだろ?
00101
NGNG0011デフォルトの名無しさん
NGNGa(1)(2)
a(1, b(2))
2番目は何?
0012VBファン
NGNGとかやると、構文エラーになるっしょ?
どういう意味?
00132
NGNG0014デフォルトの名無しさん
NGNGだと、2が表示される。
0015デフォルトの名無しさん
NGNGとか立てられそうで怖い
0016デフォルトの名無しさん
NGNG0017デフォルトの名無しさん
NGNG一応通報しておいたよ
0018デフォルトの名無しさん
NGNGタイーホ!
0019デフォルトの名無しさん
NGNGその手のソフトにはキージェネのふりをしたスパイウェアってのも
結構あるから気をつけて。変な通信してない?
0020デフォルトの名無しさん
NGNGなるほど、確かに...
Dim a(0 To 1) As Variant
a(0) = Split("1,2,3", ",")
a(1) = Split("a,b,c", ",")
Debug.Print a(0)(1)
Debug.Print a(1)(0)
とやると、"2" と "a" が表示されるよ。こんな書き方できるとは知らな
かったよ。つーことは...
Dim a As Variant
a = Array(Array(Array(Array(Array("X")))))
Debug.Print a(0)(0)(0)(0)(0)
なんて破廉恥なコードもかけるんだ...。ここまで来ると、一種のポインタ
だな。VB 恐るべし。
0021デフォルトの名無しさん
NGNGカッコを付けるだけでもバリアントになる。
Inet1.Execute の引数は文字型ではなく、バリアントだが、
strURLはダメで、(strURL)ならオッケー。
もちろん、"http://...."もオッケー。
0022デフォルトの名無しさん
NGNGそれは、ちょっと違う。(strURL) とすると式となるから、strURL の
中身が、仮引数の型に変換されるから問題なくなるだけ。
例えば...
Private Sub Bar(ByRef X As Single)
...
End Sub
Private Sub Foo()
Dim Y As Integer
Bar Y ' これは、エラーになる
Bar (Y) ' これは、OK
End Sub
と同じ。つーか、これこそ常識だと思うが...。
0023デフォルトの名無しさん
NGNG0024デフォルトの名無しさん
NGNG0025デフォルトの名無しさん
NGNG0026デフォルトの名無しさん
NGNG0027デフォルトの名無しさん
NGNG>>6
>1. a(0) だけ確保して、それに array("1", "2", "3") を代入。
>2. a(0 To 2) を確保して、a(0) = "1": a(1) = "2": a(2) = "3" とする。
>
>のどっちをやったら良いかわかんないからだろうな。
splitの動作は標準では 2 になるはずだぞ。
1は、StringやIntegerでは 2 の動作になるのにVariantはそうならないから
おかしい、と言っているんだと思う
本当にそうならんのかは試してないので知らん
00286
NGNG> splitの動作は標準では 2 になるはずだぞ。
Split() が配列を確保するわけではないよ。Split("1,2,3", ",") の結果は、
("1", "2", "3") の要素を含んだ配列となるけど、それを Dim A() As Variant
にどう格納するかが問題。String や Integer なら「>>6 の 2 の動作」しか取
りえないから問題ないけど。Variant は 1 と 2 の両方できるから、とりあえず
エラーにしてるいると思う。
■ このスレッドは過去ログ倉庫に格納されています