本ページには広告が含まれています。
配列の下限値(最小インデックス)を返します。arraynameに配列の名前、dimensionに下限値を求める配列の次元を指定します。
- 構文
- Double = LBound( arrayname, dimension )
- 引数
- array (Array)必須
- 下限値を求める配列の名前
- dimension (Integer = 1)省略可
- 返す次元を示す整数
- 戻り値
- 配列の下限値
プログラム
//////////////////////////////////////////////////
// 【引数】
// array : 下限値を求める配列の名前
// dimension : 返す次元を示す整数
// 【戻り値】
// 配列の下限値
//////////////////////////////////////////////////
FUNCTION LBound(arrayname[], dimension = 1)
RESULT = UBound(arrayname, dimension) - EVAL("LENGTH(arrayname" + strRepeat("[0]", dimension-1) + ")") + 1
FEND
//////////////////////////////////////////////////
// 【引数】
// inputs : 繰り返す文字列
// multiplier : inputsを繰り返す回数
// 【戻り値】
// inputsをmultiplier回を繰り返した文字列を返します
//////////////////////////////////////////////////
FUNCTION strRepeat(inputs, multiplier)
DIM res = ""
FOR n = 1 TO multiplier
res = res + inputs
NEXT
RESULT = res
FEND
//////////////////////////////////////////////////
// 【引数】
// arrayname : 上限値を求める配列の名前
// dimension : 返す次元を示す整数
// 【戻り値】
// 配列の上限値
//////////////////////////////////////////////////
FUNCTION UBound(arrayname[], dimension = 1)
RESULT = EVAL("RESIZE(arrayname" + strRepeat("[0]", dimension - 1) + ")")
FEND
解説
- 2行目
- UBound (自作関数)で指定された次元の配列の上限値を求めます。配列の上限値から配列のサイズ(要素数)を引いて1を加えた値で下限値を求め、戻り値として返します。arraynameの右側にdimensionの数値から1を引いた数だけ[0]を繰り返した文字列を結合し、LENGTH関数 (スクリプト関数)の引数として渡します。一次元目の要素数はLENGTH(arrayname)、二次元目の要素数はLENGTH(arrayname[0])、三次元目の要素数はLENGTH(arrayname[0][0])で求められます。EVAL関数 (スクリプト関数)で文字列で書かれた式を実行することができます。
RESULT = UBound(arrayname, dimension) - EVAL("LENGTH(arrayname" + strRepeat("[0]", dimension-1) + ")") + 1
使い方
一次元配列の下限値を求めます。
DIM array[5]
PRINT LBound(array)
- 結果
0
二次元配列の一次元目と二次元目の下限値を求めます。
DIM array[5][8]
PRINT LBound(array)
PRINT LBound(array, 2)
- 結果
0 0
SAFEARRAY関数 (スクリプト関数)で二次元配列を生成し、その配列の一次元目と二次元目の下限値を求めます。SAFEARRAY関数の第一引数と第三引数が下限値になります。
DIM array = SAFEARRAY(2, 5, 4, 9)
PRINT LBound(array, 1)
PRINT LBound(array, 2)
- 結果
2 4