Curl Global Community
ComboBoxを配列化について - Printable Version

+- Curl Global Community (https://communities.curl.com)
+-- Forum: Discussions (https://communities.curl.com/forumdisplay.php?fid=1)
+--- Forum: General Curl questions (https://communities.curl.com/forumdisplay.php?fid=2)
+--- Thread: ComboBoxを配列化について (/showthread.php?tid=1073)



ComboBoxを配列化について - naohiro0104 - 04-22-2014

こんにちは お知恵をお貸しください。

ComboBoxを配列化したいのですがうまくできません。

{let ACB:#{Array-of ComboBox}}||配列宣言
{set ACB[0]={ComboBox width=270px}}||実行時ここでエラーが発生します。


エラー内容
ullDereferenceException: 非 null 値が要求されている箇所 (0x06379336) に、null を使用しようとしています。

宜しくお願いします




RE: ComboBoxを配列化について - dyoshida - 04-22-2014

>{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ドキュメントの「配列」の項を読むと納得できるのでは。



RE: ComboBoxを配列化について - dyoshida - 04-22-2014

補足ですが、上のコード例で#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]
    }
}



RE: ComboBoxを配列化について - naohiro0104 - 04-23-2014

dyoshidaさま

ご丁寧なご回答ありがとうございました

ご指摘の通り配列の認識が間違っていました。
宣言時にオブジェクトが出来ているものと勘違いしていました。
おかげ様で思う通りの動作になり満足しております。