こんにちは お知恵をお貸しください。
ComboBoxを配列化したいのですがうまくできません。
{let ACB:#{Array-of ComboBox}}||配列宣言
{set ACB[0]={ComboBox width=270px}}||実行時ここでエラーが発生します。
エラー内容
ullDereferenceException: 非 null 値が要求されている箇所 (0x06379336) に、null を使用しようとしています。
宜しくお願いします
>{let ACB:#{Array-of ComboBox}}||配列宣言
>{set ACB[0]={ComboBox width=270px}}||実行時ここでエラーが発生します。
これだと次のような意味になるのでは。
・ComboBox配列またはnullを格納するACBという変数を宣言(初期化していないので中身はnull)
・ACBに格納されているnullを配列としてアクセス
意図していたのはこのようなコードでしょうか?
Code:
{value
|| ComboBoxまたはnullを格納する配列を生成して変数ACBに格納
let ACB:{Array-of #ComboBox} = {new {Array-of#ComboBox}}
|| この時点では、要素数0の配列なので、ACB[0]にはアクセスできない。
|| 変数ACBに格納されている配列に要素を追加(1つ目の要素なのでACB[0]として取り出しせる)
{ACB.append {ComboBox width=270px}}
|| ここでACB[0]が取り出せるようになる
ACB[0]
}
おそらくイメージされている配列とArrayが違うのではないかと思いますので、
Curlドキュメントの「配列」の項を読むと納得できるのでは。
補足ですが、上のコード例で#ComboBoxとしているのは配列の中がnullの状態も許したいのかと勝手に想像して
null許容にしただけなので、途中が抜けることなくComboBoxを格納する場合は{Array-of ComboBox}に
読み替えてください。
また、配列の要素数が最初に決められる場合はFastArray-ofのほうが高速でよいかもしれません。
Code:
{value
let facb:{FastArray-of ComboBox} =
{new {FastArray-of ComboBox},
{ComboBox width=270px, value = "A"},
{ComboBox width=270px, value = "B"},
{ComboBox width=270px, value = "C"},
{ComboBox width=270px, value = "D"}
}
{VBox
facb[0],
facb[1],
facb[2],
facb[3]
}
}
dyoshidaさま
ご丁寧なご回答ありがとうございました
ご指摘の通り配列の認識が間違っていました。
宣言時にオブジェクトが出来ているものと勘違いしていました。
おかげ様で思う通りの動作になり満足しております。