arraySplice関数

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

構文
arraySplice( array, offset, len )
引数
array 必須
offset 必須
len省略可
戻り値

プログラム

UWSC
//////////////////////////////////////////////////
// 【引数】
//   array 
//   offset 
//   len 
// 【戻り値】
//   
//////////////////////////////////////////////////
FUNCTION arraySplice(Var array[], offset, len = NULL)
	DIM tmp[-1]
	IF len = NULL THEN len = UBound(array)
	IF len < 0 THEN len = len + UBound(array)
	FOR i = offset - 1 TO len - 1
		arrayPush(tmp, array[i])
	NEXT
	DIM tmp1[-1]
	FOR i = 0 TO offset - 1
		arrayPush(tmp1, array[i])
	NEXT
	DIM tmp2[-1]
	FOR i = offset + len TO UBound(array)
		arrayPush(tmp2, array[i])
	NEXT
	arrayMerge(tmp1, tmp2)
	SETCLEAR(array)
	RESIZE(array, UBound(tmp1))
	FOR i = 0 TO UBound(tmp1)
		array[i] = tmp1[i]
	NEXT
	RESULT = SLICE(tmp)
FEND

//////////////////////////////////////////////////
// 【引数】
//   arr : 追加される配列(参照引数) 
//   tmp : 追加する配列 
// 【戻り値】
//   追加した後の配列の要素数 
//////////////////////////////////////////////////
FUNCTION arrayMerge(Var arr[], tmp[])
	FOR n = 0 TO UBound(tmp)
		arrayPush(arr, tmp[n])
	NEXT
	RESULT = UBound(arr)
FEND

//////////////////////////////////////////////////
// 【引数】
//   array : 要素を追加する配列(参照引数) 
//   values : 追加する要素をvalue1から指定 
// 【戻り値】
//   処理後の配列の要素の数 
//////////////////////////////////////////////////
FUNCTION arrayPush(var array[], value1 = EMPTY, value2 = EMPTY, value3 = EMPTY, value4 = EMPTY, value5 = EMPTY, value6 = EMPTY, value7 = EMPTY, value8 = EMPTY, value9 = EMPTY, value10 = EMPTY, value11 = EMPTY, value12 = EMPTY, value13 = EMPTY, value14 = EMPTY, value15 = EMPTY, value16 = EMPTY)
    DIM i = 1
    WHILE EVAL("value" + i) <> EMPTY
	  DIM res = RESIZE(array, UBound(array) + 1)
	  array[res] = EVAL("value" + i)
	  i = i + 1
	WEND
	RESULT = LENGTH(array)
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