LIST INDEX OUT OF BOUNDS(?)问题
BCB5上开发的一个程序,在很多机器上使用很正常,但在某些机器上运行,有时会出现如题所示的报错。
我想用CODEGUARD来检测,结果使用CODEGUARD后,程序启动后没有反应。
我知道这种错误可能是数组访问超界,但是调试时很难捕捉。如何解决呢?
顺便贴点有关代码(不能确定是这些代码的错误)
typedef class ColumnInfo
{
public:
AnsiString Title;
int Width;
}ColumnInfo;
//---------------------------------------------------------------
在FORMSHOW中:
ColumnInfo ciMenu[3];
ciMenu[0].Title = "代 码";
ciMenu[0].Width = 45;
ciMenu[1].Title = "名称";
ciMenu[1].Width = 94;
ciMenu[2].Title = "单位";
ciMenu[2].Width = 15;
AdjustGrid(dbgdMenu,ciMenu,3,10);
//-----------------------------------------------------------------
void __fastcall AdjustGrid(TDBGrid *grdadjust, ColumnInfo *clmninfo,int clmncount,int fontsize)
{
int ColumnCount;
if(grdadjust->FieldCount > clmncount )
ColumnCount = clmncount;
else
ColumnCount = grdadjust->FieldCount;
for(int k=0;k<ColumnCount; k++)
{
grdadjust->Columns->Items[k]->Title->Caption = clmninfo[k].Title;
grdadjust->Columns->Items[k]->Title->Font->Name ="宋体";
grdadjust->Columns->Items[k]->Title->Font->Size = fontsize;
grdadjust->Columns->Items[k]->Width = clmninfo[k].Width;
}
if(grdadjust->FieldCount >clmncount)
for(int k=clmncount;k<grdadjust->FieldCount; k++)
{
grdadjust->Columns->Items[k]->Title->Caption;// = ""clmninfo[k].Title;
grdadjust->Columns->Items[k]->Title->Font->Name ="宋体";
grdadjust->Columns->Items[k]->Title->Font->Size = fontsize;
grdadjust->Columns->Items[k]->Width = -1;//0;//clmninfo[k].Width;
grdadjust->Columns->Items[k]->Visible = false;
}