使用TListView列出索引超出范围

时间:2013-10-04 09:25:26

标签: c++builder vcl tlistview

当我尝试使用insert(int,String)将字符串插入TListView时,我很困惑。

这是我的代码:

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 个答案:

答案 0 :(得分: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();
    }
}

我希望这可以帮助你解决问题