RESIZEリサイズ関数

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

配列の上限値を取得または変更します。配列の上限値を変更する場合は第二引数に値を指定します。

構文
  1. Integer = RESIZE( 配列変数, サイズ )
引数
配列変数 (Array)必須
配列変数名
サイズ (Integer)省略可
配列の上限値 (多次元配列の場合は一番上の次元に対してのみ)
戻り値
配列の上限値を返す(配列サイズのみを得る場合に第2引数は省略) 

使い方

静的配列

一次元配列arrayの上限値を取得します。静的配列の場合、宣言時に指定した上限値が取得されます。

UWSC
DIM array[5]

PRINT RESIZE(array)
結果
プレーンテキスト
5

格納されている要素の数に関係なく添え字の値が取得されます。

UWSC
DIM array[4] = 1, 2

PRINT RESIZE(array)
結果
プレーンテキスト
4

サイズを変更するには第二引数に値を指定します。以下の例ではarrayの上限値を3に変更していて、上限値を超えた要素は削除されます。

UWSC
DIM array[5] = 0, 1, 2, 3, 4, 5

RESIZE(array, 3)

FOR item IN array
	PRINT item
NEXT
結果
プレーンテキスト
0
1
2
3

元の配列よりも大きいサイズを指定した場合、増えた要素にはEmptyが格納されます。

UWSC
DIM array[3] = 0, 1, 2, 3

RESIZE(array, 5)

FOR item IN array
	PRINT item + "<#TAB>" + VARTYPE(item)
NEXT
結果
プレーンテキスト
0	5
1	5
2	5
3	5
	0
	0

二次元配列arrayの一次元目のサイズを取得します。以下の例ではarray[3]3が取得されます。

UWSC
DIM array[3][4]

PRINT RESIZE(array)
結果
プレーンテキスト
3

二次元配列の二次元目のサイズを取得するには、配列変数名の後ろに[0]を付けます。

UWSC
DIM array[3][4]

PRINT RESIZE(array[0])
結果
プレーンテキスト
4

三次元以上の多次元配列でも、配列変数名の後ろにさらに[0]を追加していけば取得できます。

UWSC
DIM array[0][1][2][3][4][5]

PRINT RESIZE(array)                  // 1次元
PRINT RESIZE(array[0])               // 2次元
PRINT RESIZE(array[0][0])            // 3次元
PRINT RESIZE(array[0][0][0])         // 4次元
PRINT RESIZE(array[0][0][0][0])      // 5次元
PRINT RESIZE(array[0][0][0][0][0])   // 6次元
結果
プレーンテキスト
0
1
2
3
4
5

UBound関数 (自作関数)を使うと、第二引数に取得する次元を指定するだけで上限値を取得することができます。

UWSC
DIM array[0][1][2][3][4][5]

PRINT UBound(array, 1)
PRINT UBound(array, 2)
PRINT UBound(array, 3)
PRINT UBound(array, 4)
PRINT UBound(array, 5)
PRINT UBound(array, 6)

//////////////////////////////////////////////////
// 【引数】
//   inputs : 繰り返す文字列 
//   multiplier : inputsを繰り返す回数 
// 【戻り値】
//   
//////////////////////////////////////////////////
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
結果
プレーンテキスト
0
1
2
3
4
5

可変長配列(動的配列)

可変長配列の場合、格納されている要素数に応じて取得されます。以下の例では、要素数が添え字0〜8の9個なので上限値は8となります。

UWSC
DIM array[] = 0, 1, 2, 3, 4, 5, 6, 7, 8

PRINT RESIZE(array)
結果
プレーンテキスト
8

二次元配列で可変長配列の場合も一次元配列のときと同じで、格納されている要素数に応じて取得されます。以下の例では、2次元目まで要素が格納されているの2が返ります。

UWSC
DIM array[][3] = 0, 1, 2, 3, _      // 1次元
					4, 5, 6, 7, _   // 2次元
					8, 9, 10, 11    // 3次元

PRINT RESIZE(array)
結果
プレーンテキスト
2

関連記事

CALCARRAY関数 (スクリプト関数)
配列の合計値・最小値・最大値・平均値を求めます。
GETALLWIN関数 (スクリプト関数)
全ウィンドウのIDを取得します。
GETOLEITEM関数 (スクリプト関数)
JOIN関数 (スクリプト関数)
引数に指定した配列を結合し文字列を返します。
SETCLEAR関数 (スクリプト関数)
配列のすべての要素を任意の値で埋めます。
SHIFTARRAY関数 (スクリプト関数)
配列を指定した値だけシフトします。プラス値で後方、マイナス値で前方にシフトします。
連想配列
連想配列とは、自動的に割り当てられる数字をキーとして持つかわりに、自由に任意の文字列を割り振ることができる配列のことです。添え字に番号の変わりに名前をつけることでわかりやすく管理することができます。
divisors関数 (自作関数)
引数に指定した数値の約数のリストを返します。
LENGTH関数 (スクリプト関数)
POPUPMENU関数 (スクリプト関数)
ポップアップメニューを表示し、引数に指定した配列の中から選択された項目の要素番号を取得します。選択された項目を取得したい場合は、POPUPMENUの戻値を引数に指定した配列の要素番号として指定します。