当你把getnum1,getnum2作为参数传递给GetMax的时候,getnum1,getnum2会按照参数传递的顺序被执行一遍,以取得相应的返回值作为GetMax的参数。这是在你的 if N1 > N2 之前执行的,所以你的判断根本不能阻止那两个ShowMessage的执行

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
        showmessage(inttostr(getmax(getnum1,getnum2)));
    end;
    你的判断是有作用的,不过呢,我发觉你很怪,即然知道stdcall与pascal是不同的,但为什么你好像对函数与过程都不太了解,你根据没取getmax的返回值嘛。
      

  2.   

    程序是顺序执行的啊,结果当然如此了。你的判断在在执行完GetNum1和GetNum2后才执行的啊。
      

  3.   

    TO:WLY033
    谢谢你的指点
    我知道函数与过程的分别。但这次只是不明它是怎样传递参数的?能不能说详细些。如不用STDCALL和PASCAL又好象未什么分别。什么时候用它们才起作用?