我需要获取CheckListBox的值并转换为数组。当我按顺序从CheckListBox中选择选项时,例如(01,02,03)结果是正确的,但是如果我选择了不按顺序,例如(04,05,06),那么数组就不会得到值和数组值为0.
我的代码:
__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]);
}
}
答案 0 :(得分:0)
您使用错误的索引访问array
。您使用i
但意味着使用optionChecked
。由于阵列太短,您还存在访问越界的风险。我会将代码更改为:
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
是明智的。