LIST INDEX OUT OF BOUNDS(?)问题

dearwader 2004-04-23 03:14:08
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;
}


...全文
193 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
h13bk 2004-04-28
  • 打赏
  • 举报
回复
同意jishiping(JSP 季世平)
gpg 2004-04-28
  • 打赏
  • 举报
回复
到底是机器不同的原因还是操作系统不同的原因。
lihongxing2002 2004-04-28
  • 打赏
  • 举报
回复
jishiping 2004-04-26
  • 打赏
  • 举报
回复
如果你在设定时,没有自己设定DBGrid的列,那么 grdadjust->FieldCount 等于 grdadjust
->Columns->Count,如果自己设定了DBGrid的列,那么这2个值可能就不等了。问题是,大多
数机器上正常,只是少数机器上不正常的话,应该就不是这个问题。如果是这个问题的化,那
么所有的机器上都会出错。那么在排除了这个因素之外,上面的代码,看不错有其它的问题。
楼主能够确信,一定是你贴出的代码导致的出错吗?
dearwader 2004-04-23
  • 打赏
  • 举报
回复
非常感谢szcyx(翔翱长空)
你所说的这种情况会发生吗?我原以为他们一定相等!
szcyx 2004-04-23
  • 打赏
  • 举报
回复
可能grdadjust->FieldCount>grdadjust->Columns->Count
所以grdadjust->Columns->Items[k]会越界
dearwader 2004-04-23
  • 打赏
  • 举报
回复
自己顶一下

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧