请看这段程序执行结果:proceduce 
 
begini:=0;
while strtodatetime('2002-12-16')+i<>date do
 begin
  i:=i+1;
  if strtodatetime('2002-12-16')+i=strtodatetime('2003-1-16') then
  begin
    exit;
  end;
 end;  edit1.text:=inttostr(i);end;  执行后出现怪现象Edit1.text:='Edit1';  理论上应该Edit1.text:='31'

解决方案 »

  1.   

    if strtodatetime('2002-12-16')+i=strtodatetime('2003-1-16') then
        begin
          Break ;
        end;
      

  2.   

    proceduce 
     
    begini:=0;
    while strtodatetime('2002-12-16')+i<>date do
     begin
      i:=i+1;
      if strtodatetime('2002-12-16')+i=strtodatetime('2003-1-16') then
        break;
     end;  edit1.text:=inttostr(i);end;楼主想干什么,如果只是想得到31的话,为什么不用
    strtodatetime('2003-1-16') - strtodatetime('2002-12-16') 呢
      

  3.   

    break退出循环体,continue跳过剩下的语句,进行下一次循环
      

  4.   

    exit是指退出procedure相当与c/c++里面的return;
    如果要返回值可以先给result:=赋值,然后exit