我用DELPHI7的版本,写的程序如下
procedure TForm1.Button2Click(Sender: TObject);
  var i1,x1 ,y1,z1,sum1 :integer ;
      begin
     x1:=25;
     y1:=10;
     if x1<y1 then
        z1:=x1
     else
        z1:=y1;
     sum1:=0;
     for i1:=1 to 10 do
     sum1:=sum1+1;
      end;
不执行if语句和FOR语句,一定要把放在如下的部分程序能正常执行了.请叫高手这是什么原因?
var
  Form1: TForm1;
    i:integer;
    x,y,z,sum:integer;  
implementation

解决方案 »

  1.   

    照贴你的源码,执行了if与for语句,z1与sum1分别是10。是否多了一些分号;?
      

  2.   


    procedure TForm1.Button2Click(Sender: TObject); 
      var i1,x1 ,y1,z1,sum1 :integer ;      
    begin 
        x1:=25; 
        y1:=10; 
        if x1 <y1 then 
            z1:=x1 
        else 
            z1:=y1; 
        sum1:=0; 
        for i1:=1 to 10 do 
        sum1:=sum1+1;   showMessage(inttostr(sum1));
      showMessage(inttostr(z1));
    end; 这样看,执不执行?? 呵呵
      

  3.   

    今天打开了一个163的网站,结果一直没看。可惜IE没有帮我自动关掉,看来IE没有PASCAL的编译先进,会优化。 :)
      

  4.   

    局部变量,过程结束以后就不存在了,计算出来了也没用,所以被编译器自动优化掉,不会执行。
    而如果放在implementation前面,是全局变量,别的地方可能有用,所以编译器老老实实地编译执行。
      

  5.   

    up corn 1~local variable 的问题,procedure结束之后变量就会释放,计算出来后也不会保存的,你可以用function来留个结果的返回值,这样就会保存了,或者用全局变量
      

  6.   

    你在编译器里吧编译器优化关闭了,就好了,你这种没有意义的代码DELPHI编译器都会给你优化掉的。
      

  7.   

    begin
      x1:=25; 
      y1:=10; 
      if x1 <y1                // 编译器在此判断后,进行优化处理,除去then后一句(废句)只执行else后一句
        then z1:=x1 
        else z1:=y1; 
      sum1:=0;                 
      for i1:=1 to 10 do       // 编译器在此判断后,进行优化处理,在此与sun1:=10等值,故优化处理了。   
        sum1:=sum1+1; 
    end; 
      这就是Delphi IDE的优越性。采用等效而简化机器码。
      

  8.   

    Unit1.pas.31: x1:=25; 
    0044E1CC B819000000       mov eax,$00000019
    Unit1.pas.32: y1:=10;
    0044E1D1 BA0A000000       mov edx,$0000000a
    Unit1.pas.33: if x1 <y1 then
    0044E1D6 3BD0             cmp edx,eax
    Unit1.pas.38: for i1:=1 to 10 do
    0044E1D8 B80A000000       mov eax,$0000000a
    0044E1DD 48               dec eax
    0044E1DE 75FD             jnz -$03
    Unit1.pas.42: end;
    0044E1E0 C3               ret 
    看看这个就明白了,DELPHI是一个聪明的编译器。
      

  9.   

    请问msfm,上面这些汇编代码在DELPHI7可以看到吗?还是用了什么测试工具才能看到呀?
      

  10.   

    这段代码编译起来至少也得三四条Warn吧,咋的现在都流行无视Warn了?