我编了两个函数
procedure setName(var sName:string);overload;
procedure SetName(const sName:string);overload;
///////////////////////////////////////////////////
procedure setName(var sName:string);overload;
begin
  Name:=sName;
end;procedure SetName(const sName:string);overload;
begin
  Name:=sName;
end;
结果第二行报错,请问是什么原因?

解决方案 »

  1.   

    不知道你是在那里声明这两个函数的,如果是都是在published中声明的话就会出错,因为是不能在同一个对象的公布部分对同一个函数重载2次的!
      

  2.   

    你这两个函数的参数类型都一样,都是string,所以会错。
    重载必须是参数个数不同或参数类型不同。
      

  3.   

    sysu(死树) 、guestman(天涯浪子) 说得对
      

  4.   

    声明重载函数有两条原则:每个例程声明后面必须添加overload 关键字。 
    例程间的参数个数或(和)参数类型必须不同,返回值不能用于区分各例程。