首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何传输数组的CheckListBox值?

如何传输数组的CheckListBox值?
EN

Stack Overflow用户
提问于 2016-01-28 16:33:45
回答 1查看 305关注 0票数 0

我需要获取一个CheckListBox的值,并为一个数组进行传输。当我按顺序从CheckListBox中选择选项时,例如(01、02、03),结果是正确的,但是如果我选择无序,例如(04、05、06),数组不会得到值,数组值为0。

我的代码:

代码语言:javascript
复制
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)    
 {
        CheckListBox1->Items->Add("01");
        CheckListBox1->Items->Add("02");
        CheckListBox1->Items->Add("03");
        CheckListBox1->Items->Add("04");
        CheckListBox1->Items->Add("05");
        CheckListBox1->Items->Add("06");
        CheckListBox1->Items->Add("07");
  }

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    float array[3];
    int optionChecked=0;

    for(int i=0; i<CheckListBox1->Count;i++) {
        if(CheckListBox1->Checked[i] == true) {
            array[i]= StrToFloat(CheckListBox1->Items->Strings[i]);
            optionChecked++;
        }
    }

    for(int i=0;i<optionChecked;i++) {
        ShowMessage(array[i]);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-28 16:43:57

您正在使用错误的索引访问array。您使用i,但意味着使用optionChecked。由于数组太短,您也有访问超出界限的风险。我会修改代码如下:

代码语言:javascript
复制
float array[7];
int optionChecked=0;

for(int i=0; i<CheckListBox1->Count;i++) {
    if(CheckListBox1->Checked[i] == true) {
        array[optionChecked]= StrToFloat(CheckListBox1->Items->Strings[i]);
        optionChecked++;
    }
}

明智的做法是添加一些防御代码,以断言array的长度等于CheckListBox1->Count

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35066904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档