SAFEARRAYセーフアレイ関数

本ページには広告が含まれています。

指定したサイズの配列を生成します。第三引数・第四引数は省略可能ですが、どちらか片方だけ指定または省略することはできません。

下限値を0以外の配列を生成したいときや、<ruby>FUNCTION-FEND<rt></rt></ruby>で二次元配列を戻り値として返す場合に使います。一次元配列を生成する場合はSLICE関数 (スクリプト関数)を使います。

構文
  1. safearray = SAFEARRAY( 下限, 上限, 二次元下限, 二次元上限 )
引数
下限 (Integer)必須
配列の下限を設定
上限 (Integer)必須
配列の上限を設定
二次元下限 (Integer)省略可
二次元配列の下限を設定
二次元上限 (Integer)省略可
二次元配列の上限を設定
戻り値
作成されたSAFEARRAY型の配列

使い方

一次元配列

下限値:2、上限値:4の一次元配列を生成します。array[0]、array[1]の要素にはアクセスすることはできません。

UWSC
結果
プレーンテキスト

下限値:0、上限値:5の配列arrayを生成します。

UWSC

第一引数の下限値が0の場合、以下のように書くこともできます。この書き方も下限値:0、上限値:5の配列となります。

UWSC

以下はどちらも同じ要素を持つ一次元配列を生成することができます。

UWSC

二次元配列

一次元目の下限値:2、上限値:4、二次元目の下限値:6、上限値:8の二次元配列を生成します。

UWSC
結果
プレーンテキスト

第三引数・第四引数を指定することで二次元配列を宣言することができます。以下は一次元目の下限値が0、一次元目の上限値が3、二次元目の下限値が0、二次元目の上限値が5の配列を生成します。

UWSC

一次元目、二次元目の下限値が0の場合、以下のように書くこともできます。

UWSC

以下はどちらも同じ要素を持つ二次元配列を生成することができます。

UWSC

プログラム実行例

空の配列を作成

UWSC
DIM arr
arr = SAFEARRAY(0, -1)

PRINT "下限︰" + LBound(arr)
PRINT "上限︰" + UBound(arr)

//////////////////////////////////////////////////
// 【引数】
//   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
結果
プレーンテキスト
使用関数

一次元配列を生成

UWSC
結果
プレーンテキスト
使用関数