VBのVariantってどうよ。
■ このスレッドは過去ログ倉庫に格納されています
0001VBマニア
NGNGa = Split("1,2,3", ",")
は型不一致エラーになるのに
Dim a As Variant
a = Split("1,2,3", ",")
は型不一致エラーにならない。
こんなVariant型ってなんか不思議?
それとも常識?
0002デフォルトの名無しさん
NGNGC言語でいいだろ・・・もう
0003あんちVB
NGNG0004あんちVB
NGNGσ(・_・)はだいっ嫌いだけどねぇ。
0005VBファン
NGNG0006デフォルトの名無しさん
NGNGDim a() As Variant
a = Split("1,2,3", ",")
とやられたら、
1. a(0) だけ確保して、それに array("1", "2", "3") を代入。
2. a(0 To 2) を確保して、a(0) = "1": a(1) = "2": a(2) = "3" とする。
のどっちをやったら良いかわかんないからだろうな。
ちなみに、1. なら、 a を配列と宣言する必要ないし、
2. なら Dim a() As String と宣言すりゃ良いだけ。
ついでに言っとくと、単発すれ嫌われるよ。
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 の両方できるから、とりあえず
エラーにしてるいると思う。
■ このスレッドは過去ログ倉庫に格納されています