VBSのSplitの注意点
今日はプログラムの課題の発表日
(会社で所属しているチームで私が主体となって課題を作成しています。)
テキストファイルを取得(読み込んで)取得した値の内大きい値を表示する。
概要としては
- 1レコードの値はカンマ区切りで2つの数値が渡される。
- 数値以外の値は入らない
- 0~99999までの値とする。
といった課題を作成したんですが
VBSにおいてカンマ区切りの値をSplitで配列に格納すると
文字列として認識されるみたいで
50,100の値をSplitで分割した場合
50 < 100 にしたいと思っていたのに
"50" > "100" と言った評価になってしまい。
間違った結果を出してしまった人がいました。
(まぁ気付いてよって思いましたが)
VBSは変数の宣言の際に型の宣言といったものがないので
実際に格納されている値がどんな型なのか分からないんだなぁと思いました。
なので数値として扱いたいので
Dim inputTextArray
Dim firstNo, secondNo
inputTextArray = Split("50,100",",")
firstNo = CLng(inputTextArray(0))
secondNo = CLng(inputTextArray(1))
If(firstNo < secondNo) then
MsgBox(secondNo)
End if
みたいに型変換(キャスト)をしなければいけない。
【VBSの変数の宣言】
- バリアント型で宣言される
- 格納された値に準じて型を決める(数値が入ったらint型など)
- 実際に変数の型の状態を確認するのが手間(?)
といった特性があるのかなと認識してます。(間違ってたら指摘を・・・)
Dim i
i = 1
DIm x
x = "1"
として型の宣言をせずに自由に値を格納できるんですよね。
VBAからプログラムをやってきた身としては非常にわずらわしく感じてます。
しかし、VBSって世の中でどのくらい需要あるのだろうか・・・(汗)
フリフリ ヾ(・д・。)マタネー♪