很多时候我们少写参数时,系统提示缺少参数!
为什么下列程序为何写1个就能通过,编译器不提示缺少参数?例如下面:procedure TForm1.Memo1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
accept:=true;
end;应该写5个参数才对呀?

解决方案 »

  1.   

    這個是因為這個程序的用法所致。呼叫這個程序的來源端就必須要傳入必要的參數值(系統內部自我傳遞)
     var Accept: Boolean
      

  2.   


    都什么和什么啊? 雷人的问题。
    什么地方应该写5个参数? 
    如果LZ指的是函数内部(那个accept:=true),那么函数内部不引用任何函数参数都可以。
      

  3.   

    楼主混淆了“函数调用时的参数传递”和“函数内部参数使用”两方面,你的例子是说的函数内部参数使用的问题,你定义了N个参数,但这些参数不一定全部使用,那么你可以不用。但是你在一个函数或过程中调用另外一个函数或过程时,参数类型与个数必须与被调用的函数或过程一致。这是接口的问题。
    当然也有例外,有的函数或过程能够接受的参数个数是可变的,比如C语言里的Printf,比如Delphi的Write。这类参数个数的变化与面向对象的overload的参数个数不同也不一样。