请帮看下这段代码

fishyu10 2008-03-31 11:44:27
var
Item,i:integer;
ItemName: array of string;

begin
Item:= DBGrid1.Columns.Count;
SetLength(ItemName, Item-1);
For i:=0 to Item-1 do
ItemName[i]:= DBGrid1.Columns[i].Title.Caption ;


就这样,一执行就报错,就出现一个标题为cpu的窗口,16进制数的那种报错窗口
...全文
79 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Harryfin 2008-03-31
  • 打赏
  • 举报
回复

var
Item,i:integer;
ItemName: array of string;
begin
Item := DBGrid1.Columns.Count;
SetLength(ItemName, Item); //你SetLength的项数错了
For i := 0 to Item - 1 do
ItemName[i] := DBGrid1.Columns[i].Title.Caption;
end
hsmserver 2008-03-31
  • 打赏
  • 举报
回复
For i:=low(itemname) to High(itemname) do
kaikai_kk 2008-03-31
  • 打赏
  • 举报
回复
越界
sanguomi 2008-03-31
  • 打赏
  • 举报
回复
内存分少了一个
SetLength(ItemName, Item-1);
不要减一的
阿三 2008-03-31
  • 打赏
  • 举报
回复
2楼正解,但1楼用low和high比用别的方法好,支持
yongyuanwang 2008-03-31
  • 打赏
  • 举报
回复
var
Item,i:integer;
ItemName: array of string;

begin
Item:= DBGrid1.Columns.Count; //如果Item为10
SetLength(ItemName, Item-1); //开辟的控件为9
For i:=0 to Item-1 do //赋10个值到ItemName,自然会导致地址访问越界冲突
ItemName[i]:= DBGrid1.Columns[i].Title.Caption ;

小呆之家 2008-03-31
  • 打赏
  • 举报
回复
2 楼正解.

分配动态数组元素与总的实际元素数量不符;

5,939

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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