function m(p:integer):integer;
var i:integer;
begin
  i:=p;
  if i=1 then
    showmessage('sss');
end;不知为何i:=p;这一句不执行

解决方案 »

  1.   

    编译通过了如果将后面一句改成showmessage(inttostr(i));就执行i:=p;了
      

  2.   

    function m(var p: integer): integer;
    begin
      if p = 1 then
        showmessage('sss');
    end;
    这么写不是更好吗??上面这个赋值是执行的吧,不然怎么做判断,怎么showmessage???
      

  3.   

    但是如果我Result := i后就执行了,这背后什么机制啊??
      

  4.   

    procedure TForm1.FormCreate(Sender: TObject);
    var a:integer;
    begin
    a:=1;//断点在这里也不执行。
    end;
      

  5.   

    可能是Delphi的一种优化机制吧,没有多大作用的变量弃置不用,而放在内部处理!
      

  6.   

    你用的是function,当然得用result返回个值了
    不想返回值用procedure!
      

  7.   

    为什么你们有人用程序试的结果不一样,我用DELPHI7,OPTION里设的是优化.但是没有见到你们说的不执行.
      

  8.   

    我认为可能是Delphi在函数创建时已经将函数中的“变量=变量”分配并共享地址