这是什么错误啊?拜托大虾帮忙看一下!!(100分)

  • 主题发起人 主题发起人 dfwer
  • 开始时间 开始时间
D

dfwer

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序执行时出现如下错误,哪位能告诉我问题出在哪里吗?
project rgbpprj.exe raised exception class EStringListError with message 'List
index out of bounds (-1)'.process stoped.

代码如下:
procedure TForm1.BitBtn5Click(Sender: TObject);
begin
if (edit7.Text<>'') and (edit8.text<>'') and (edit9.text<>'') and (edit10.text<>'')and (edit11.text<>'') then
begin
if radiogroup1.items[radiogroup1.ItemIndex]='自动生成' then
edit12.enabled:=false
else edit12.Enabled:=true;
table1.locktable(ltWriteLock);
table1.insert;
table1.Fieldbyname('wtgddm').asstring:=edit8.text;
table1.Fieldbyname('wtzqdm').asstring:=edit9.text;
table1.Fieldbyname('wtwtsl').asinteger:=strtoint(edit10.text);
table1.Fieldbyname('wtwtjg').asfloat:=strtofloat(edit11.text);
if radiogroup2.items[radiogroup2.ItemIndex]='买' then
table1.Fieldbyname('wtywlb').asstring:='0b'
else table1.fieldbyname('Wtywlb').asstring:='0s';
table1.Fieldbyname('wtclbz').asstring:='z';
table1.Fieldbyname('wtwtsj').asstring:=FormatDateTime('hhmmss',now);
if radiogroup1.items[radiogroup1.ItemIndex]='自动生成' then
begin
table1.Fieldbyname('wthtxh').asstring:=edit7.text+FormatDateTime('yyyymmdd',now)+inttostr(lsh);
lsh:=lsh+1;
end
else
if (edit12.text='') then
showmessage('请输入流水号!')
else
table1.Fieldbyname('wthtxh').asstring:=edit7.text+FormatDateTime('yyyymmdd',now)+edit12.text;

table1.post;
table1.unlocktable(ltwritelock);
end
else
begin
if edit7.text='' then showmessage('请输入席位号!');
if edit8.text='' then showmessage('请输入股东代码!');
if edit9.text='' then showmessage('请输入股票代码!');
if edit10.text='' then showmessage('请输入委托数量!');
if edit11.text='' then showmessage('请输入委托价格!');
end;

end;
除了wtwtsl、wtwtjg是数值类型外,其余的都是字符类型。

 
if radiogroup1.items[radiogroup1.ItemIndex]='自动生成' then
这句好像有问题!
 
radiogroup1.ItemIndex 没有初始值,
 
数组越界。单步跟踪调试一下吧。
 
to eric.youbin:
我在radiogroup1.ItemIndex 的不能设置啊!是-1,不能改!我设置了radiogroup1中的radiobutton1的
checked=true;在radiogroup2也是这样。
to zhumoo:
什么数组越界?我单步跟踪调试的时候到了这一行:
if radiogroup2.items[radiogroup2.ItemIndex]='买' then
table1.Fieldbyname('wtywlb').asstring:='0b'
就出现了上诉错误。
 
单这样看很难看出问题的!
不过问题一定出在这:
if radiogroup2.items[radiogroup2.ItemIndex]='买' then
table1.Fieldbyname('wtywlb').asstring:='0b'
一般(从我的经验)都是radiogroup2.items[radiogroup2.ItemIndex]不存在引起
'List index out of bounds (-1)'的错误,你可以试试用这样来代替
if radiogroup2.items[1]='买' then //radiogroup2.ItemIndex 用1代替
table1.Fieldbyname('wtywlb').asstring:='0b'
看还有没有出错!
 
请问解决了吗?
 
还是不行!就是这一行有问题!
改成如下后:
if radiogroup2.items[1]='买' then //radiogroup2.ItemIndex 用1代替
table1.Fieldbyname('wtywlb').asstring:='0b'
错误是:
project rgbpprj.exe raised exception class EStringListError with message 'List
index out of bounds (1)'.process stoped.



 
if radiogroup2.items.strings[1]='买' then //radiogroup2.ItemIndex 用1代替
table1.Fieldbyname('wtywlb').asstring:='0b'
 
初始化radiogroup1的选项来设置radiogroup1.ItemIndex的值
 
绑定错误一般就是越界的问题,好好看看你的下界
 
出错的地方在这里
if radiogroup1.items[radiogroup1.ItemIndex]='自动生成' then
你没有初始化RadioGroup组件的ItemIndex属性,并且程序运行后没有单击动作,所以它
一直为-1
解决办法:在程序的设计时,在Object Inspector里面将RadioGroup1的属性设置为一个
非-1的值就可以了.

 
不能初始化啊!
我用两个panel,没个panel上一个radiogroup,每个radiogroup包含两个radiobutton。
我在radiogroup的itemindex属性中不能设置,始终是-1,是怎么回事?
我把radiogroup中的radiobutton1(就是‘自动生成’)的checked属性初始化为true怎么也
不行?这个时候itemindex不应该是0吗?
程序运行后有点击动作!!
 
to D影子D:
还是一样的错误!
 
我已经找到原因了:我的两个radiobutton是拖的两个组件,我试了在items属性中设置两个
radiobutton是就可以了!也可以修改itemindex的属性了!但是这时不能单独的操作两个radiobutton,
例如修改字体、颜色等,而是作为一个整体。
这是为什么???
 
我帮你看看。
 
怎么没人帮忙啊?
 
你不会是放RadioButton 控件放到
RadioGroup上吧,
我猜想你肯定是这样。

RadioGroup 上有Items 属性,
直接在里面输入你要的各个选项。

而不是把RadioButton 放到 RadioGroup 上


他们其实是一个控件
 
上面的说的对啊!我是直接加radiobutton的!
但是可以用if radiobutton1.checked=true then 来解决啊!
哈哈!
自己搞定!
 
多人接受答案了。
 
后退
顶部