我是笨蛋???????(100分)

  • 主题发起人 主题发起人 SINGLBOY
  • 开始时间 开始时间
S

SINGLBOY

Unregistered / Unconfirmed
GUEST, unregistred user!
代码:
  ;for i:=1 to FPart.Count-1 do begin
 ;  ; if Items[i].FData.P0<>slLink then begin
 ;  ;  ; P:=1;
 ;  ;  ; for k:=i-1 downto 1 do begin
 ;  ;  ;  ; if Items[k].FData.P0<>slLink then
 ;  ;  ;  ;  ; Break;
 ;  ;  ;  ; Inc(P);
 ;  ;  ; end;
 ;  ;  ; MountNext(i-p,1,i,0);
 ;  ; end;
 ;  ; if (Items[i].FData.P0=slCylinder) and (TCylinSys(Items[i].FPart^).FDirection=False) then begin
 ;  ;  ; Vv[p]:=TCylinsys(Items[i].FPart^).GetVm;
 ;  ;  ; Inc(p);
 ;  ; end;
 ; end;

当FPart.Count=7 和 第五行的if 语句满足后 本来 i=7后应跳出循环 可它竟然进去了
这是怎么回事?????????[V]
 
你那只是跳出for k:=i-1 downto 1 do begin这一级的循环。
 
你还在for i:=1 to FPart.Count-1 do begin里
; ;
 
没错,你是[:D]
 
单步调试不就中了?

这时候我用goto语句*_^
 
用goto吧 呵呵 这时用也许 直观一点[:D]
 
你们没有明白我得意思
我就是要跳出 for k:=i-1 downto 1 do 跳到MountNext(i-p,1,i,0)
但不跳出for i:=1 to FPart.count-1 do
本来FPart.Count=7 当i=7时它应跳过 for i:=1 to FPart.Count-1 do
可是却进去了 执行 if Items.FData.P0<>slLink then 道至'List index
out of bounds(7)'错误
 
不是笨蛋也差不多。
 
电脑没错,你的代码与你的想法不符.
你的想法是什么?
 
>>pingbaoshi
上面的程序应该是这样:
for i:=1 to 6 do begin ; ; ; ; //i=7跳过循环
; ......

end;

实际结果是:
for i:=1 to 6 do begin
; ...... ; ; ; ; ; ; ; ; ; ; ; ;//i=7又进入循环----出错!!!

end;
 
已经找到答案了,谢谢!如下:
; q:=0;
; for i:=1 to FPart.Count-1 do begin
; ; if Items.FData.P0<>slLink then begin
; ; ; P:=1;
; ; ; k:=i-1;
; ; ; while Items[k].FData.P0=slLink do begin
; ; ; ; Inc(p);
; ; ; ; Dec(k);
; ; ; end;
; ; ; MountNext(i-p,1,i,0);
; ; end;
; ; if (Items.FData.P0=slCylinder) and (TCylinSys(Items.FPart^).FDirection=False) then begin
; ; ; Vv[q]:=TCylinsys(Items.FPart^).GetVm;
; ; ; Inc(q);
; ; end;
; end;

错误原因:Vv越界!由于Range checking 没打开,所以Delphi没有报错,错误却跑到for 里去了奇怪![^]
dingbaosheng ;5
doxpix ;5
lisa_lqq ;5
pingbaoshi ;80
savenight ;5
 

Similar threads

后退
顶部