dbgrid选择多行的问题,急,在线等待!问题解决立刻散分!(100分)

  • 主题发起人 主题发起人 wjfgm
  • 开始时间 开始时间
W

wjfgm

Unregistered / Unconfirmed
GUEST, unregistred user!
D6+sql2000
我的原代码如下:
var
shd[0..10] of string;
begin
if DBGrid1.SelectedRows.Count>0 then//如果选择行数大于0
begin
with DBGrid1.DataSource.DataSet do
for i:=0 to DBGrid1.SelectedRows.Count-1 do
begin
GotoBookmark(pointer(DBGrid1.SelectedRows.Items));
shd:=query1.fieldbyname('fcdk_djh').AsString;
if DBGrid1.SelectedRows.Count<2 then s:=shd
else
s:=s+shd+'/';
bookmark:='';
end;
end;
end;
当所选行数小于12行时,一切正常,但当大于或等于12行时就出错,提示:
Access violation at address 004045B2 in module 'sellmangage.exe'.Read of address
FFFFFFFA'
看提示,好像是内存冲突或内存溢出,请问这是什么原因造成的,如何解决?
问题解决立刻散分!
 
是shd[0..10] of string;设小了
改成shd[0..30] of string;试试!
可以给分了吧!!
 
shd[0..10] of string小了正好11个超过11个就空指针
摄制位动态数组
shd : array of string
begin
setlength(shd,dbgrid1.selectedRows.Count);
...
 
就是阿,使用动态数组就行了,
按楼上的做吧,没问题的。
 
shd[0..11] of string ok
 
是shd[0..10] of string;设小了
 
同意以上意見!
 
因为hs_ss和reallearning最新回答,所以分就多一点!!
 
后退
顶部