Индекс списка вне границ с помощью TListView
Я запутался, когда я пытаюсь вставить строку в TListView, используя insert(int,String)
,
Вот мой код:
void __fastcall TFrmNewPeta::showDefaultRute()
{
std::string line;
std::ifstream ifs;
wisata.savedefaultT4Awal("DefaultDataAwal");
wisata.savedefaultT4Jarak("DefaultDataJarak");
wisata.savedefaultT4Tujuan("DefaultDataTujuan");
ifs.open("DefaultDataAwal");
try{
if(ifs.is_open())
{
for(int indexfile=0;std::getline(ifs,line);++indexfile)
{
ListItemnew = ListView1->Items->Add();
ListItemnew->Caption = String(IntToStr(indexfile+1));
ListItemnew->SubItems->Insert(indexfile,line.c_str());
//cbxtest->Items->Insert(indexfile,line.c_str()); //successfull
}
}
}__finally{
ifs.close();
}
}
С этим компилятор говорит "List Index out of bounds (1)"
Меня много раз пытались найти выход, но я получил тот же результат.
Но это заставило меня задуматься, потому что, когда я пытаюсь протестировать с ComboBox, он работает хорошо.
cbxtest->Items->Insert(indexfile,line.c_str());
Если что-то не так с моим кодом?
1 ответ
Решение
Попробуй это
void __fastcall TFrmNewPeta::showDefaultRute()
{
std::string line;
std::ifstream ifs;
wisata.savedefaultT4Awal("DefaultDataAwal");
wisata.savedefaultT4Jarak("DefaultDataJarak");
wisata.savedefaultT4Tujuan("DefaultDataTujuan");
ifs.open("DefaultDataAwal");
try{
if(ifs.is_open())
{
for(int indexfile=0;std::getline(ifs,line);++indexfile)
{
ListItemnew = ListView1->Items->Add();
ListItemnew->Caption = String(IntToStr(indexfile+1));
ListItemnew->SubItems->Add(line.c_str());
//cbxtest->Items->Insert(indexfile,line.c_str()); //successfull
}
}
}__finally{
ifs.close();
}
}
Я надеюсь, что это поможет вашим проблемам