加急,重金!!!(100分)

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

DELLy

Unregistered / Unconfirmed
GUEST, unregistred user!
请教各位大虾:
我的程序原来是好的,可是当我拷到另一台机子上时(delphi是重新装的,bde也是默认的),此时可执行程序也没问题,同样可以执行;可是当我重新编译后,就有多个菜单进去的时候出现如下错误:List index out of bounds (0).
其中:菜单的click事件为: showForm(TFrmxtyh, @Frmxtyh);
此其中:我把欲开开表单的onactive事件和oncreate事件关掉,同样出现同样的错误,
请问各位大侠有何高招!在下感激不尽!!!
 
请贴出代码。
 
可否讲的在清楚些
 
1.单步跟踪,肯定会发现哪里出错.
2.如果不能发现,把代码寄给我,帮你看看. 你的问题太笼统,不看代码没法说.
 
Form的OnCreate出错。
 
*****其中onactive代码为:********
var
i,j:integer;
name0,name1,jj:string;
begin
if fhbz=0 then
begin
for i:=1 to 100 do
if copy(table1czyqx.value,i,1)='1' then
userqx:='1'
else
userqx:='0';
listbox1.Items.Clear;
for i:=0 to frmmenu.componentcount-1 do
if frmmenu.components is TMenuItem then
begin
name0:=tmenuitem(frmmenu.components).caption;
name1:=tmenuitem(frmmenu.components).name;
j:=strtoint(copy(name1,2,3));
if length(inttostr(j))=1 then jj:='00'+inttostr(j)+':';
if length(inttostr(j))=2 then jj:='0'+inttostr(j)+':';
if length(inttostr(j))=3 then jj:=inttostr(j)+':';
if name0<>'-' then
if userqx[j]='1' then
listbox1.Items.add('[√]'+jj+(copy(name0,5,length(name0)-4)))
else
listbox1.Items.add('[×]'+jj+(copy(name0,5,length(name0)-4)));
end;
end;
fhbz:=1;
end;
*******oncreate代码为***********
procedure TFrmxtyh.FormCreate(Sender: TObject);
begin
frmxtyh.left:=0;
frmxtyh.top:=0;
frmxtyh.height:=378;
frmxtyh.width:=636;
FHBZ:=0;
table1.open;
fs:=0;
end;
请指教:)
 
可能是窗体的代码有误
应该加上:table1.close
 
当name0等于'-'时,menuitem的name也赋值了吗?

再把你的给menuitem的name,caption赋值的代码贴出来.
 
单步执行错误提示为:Priject xt.exe raised exception class EListError with message "List index out of bounds (0).'

请教!!!
 
delphi4+up3???
是不是patch没装?
 
请问cytown前辈

delphi4+up3???
和patch是不是也在delphi盘上呢?

 
"单步执行"执行到那一句出错?
 
cakk,谢谢你了!!!
单步执行不提示哪行出错,只是出现上述错误就当机而已。。。。
 
你跟踪的不彻底.

先用f8跟踪出一个大致位置,然后用f7进行细致的单步跟踪.
 
注意你的table1czyqx.value,userqx在进入程序时是否有少于100个字符!
还有在给j付值时先判断name0是否='-';请注意数组;
 
请教各位:在delphi中如何实现右键功能???
 
onmousedown,onmouseup里实现
type TMouseEvent = procedure (Sender: TObject; Button: TMouseButton; Shift:
TShiftState; X, Y: Integer) of object;
property OnMouseDown: TMouseEvent;

button:tmousebutton
***/type TMouseButton = (mbLeft, mbRight, mbMiddle);//左右中
 
呵呵
右键用Popupmenu好了。

那个程序你确定没改过?

打开OPTION-COMPLIE-DEBUG开关,设置缎点,然后F7/F8跟踪,看哪句出铎。
把ONACTIVE代码去了,放在一个BUTTON里看看有没有问题。
 
如果错误出在onactive中,根据错误提示只可能一个地方出错:
j:=strtoint(copy(name1,2,3));
得到的结果为j = 0
没细看你的程序. 自己研究一下是否那里错了.
 
请教各位如何使用日期控件???
 
后退
顶部