vlax-make-safearray を使用して配列を作成したら、vlax-safearray-fill または vlax-safearray-put-element を使用して配列にデータを格納することができます。
vlax‑safearray‑fill 関数には、2 つの引数を指定する必要があります。1 つは、作成しようとしている配列を格納する変数で、もう 1 つは配列の要素に割り当てられる値のリストです。配列内の要素の数だけ値を指定する必要があります。
たとえば、次のコードは 3 つの倍精度浮動小数点数型の 1 次元配列を作成します。
(setq point (vlax-make-safearray vlax-vbDouble '(0 . 2))) (vlax-safearray-fill point (list 100 100 0)) #<safearray...>
配列の内容は、vlax-safearray->list 関数を使用してリスト形式で表示することができます。
(vlax-safearray->list point) (100.0 100.0 0.0)
配列内の各要素に対して値を指定しないと、vlax-safearray-fill 関数はエラーになります。
複数次元の配列を使用するときは、vlax-safearray-fill 関数に、次元に対応する各リストからなるリストを渡す必要があります。たとえば、次の文は文字列の 2 次元配列に値を割り当てます。各次元には 3 つの要素が格納されます。
(setq mat2 (vlax-make-safearray vlax-vbString '(0 . 1) '(1 . 3))) (vlax-safearray-fill mat2 '(("a" "b" "c") ("d" "e" "f"))) #<safearray...>
mat2 の内容を確認するには、vlax-safearray->list を使用します。
(vlax-safearray->list mat2) (("a" "b" "c") ("d" "e" "f"))
vlax‑safearray‑put‑element 関数を使用すると、セーフ配列の 1 つまたは複数の要素に値を割り当てることができます。この関数で指定する引数の数は、配列内の次元の数によって異なります。vlax-safearray-put-element 関数に引数を指定するには、次の規則が適用されます。
たとえば、次のコードは 3 つの倍精度浮動小数点数型の 1 次元配列を作成します。
(setq point (vlax-make-safearray vlax-vbDouble '(0 . 2))) #<safearray...> (vlax-safearray-put-element point 0 100) (vlax-safearray-put-element point 1 100) (vlax-safearray-put-element point 2 0)
配列内の要素の値を変更する必要がある場合は、もう一度 vlax-safearray-put-element を呼び出すことができます。次の例は、配列の 2 番目の要素の値を 50 に変更します。
(vlax-safearray-put-element point 1 50)
次の例は、文字列の 2 次元配列を作成し、値を格納します。配列の最初の次元はインデックス 0 で始まり、2 番目の次元はインデックス 1 で始まります。
(setq mat2 (vlax-make-safearray vlax-vbString '(0 . 1) '(1 . 3))) #<safearray...> (vlax-safearray-put-element mat2 0 1 "a") (vlax-safearray-put-element mat2 0 2 "b") (vlax-safearray-put-element mat2 0 3 "c") (vlax-safearray-put-element mat2 1 1 "d") (vlax-safearray-put-element mat2 1 2 "e") (vlax-safearray-put-element mat2 1 3 "f")
vlax‑safearray‑>list 関数を使用して、配列の内容を確認できます。
(vlax-safearray->list mat2) (("a" "b" "c") ("d" "e" "f"))