To szhcracker:<br>貌似没有任何人说过“Pointer 不可以在函数的变量中赋默认值”:<br>function GetStr(a: PChar = nil; b: PChar = nil): PChar;<br>begin<br> Result:=PChar(string(a)+string(b));<br>end;<br><br>To 楼主:<br>之所以编译不能通过,这完全是在情理之中:<br>PChar 是个指针,对它可以赋默认值,这完全没问题,但必须保证这个默认值是固定的,这也是其它类型参数默认值的规律,并非 PChar 特殊;而诸如 '00' 的默认参数,它的地址是临时分配的,第一次调用时的 '00' 和第二次调用时的 '00' 的地址不一定相同,这就违背了 Delphi 参数默认值的规则,编译当然不能通过。<br>下面的写法都是正确的(但是没有虾米用):<br>function GetStr(a: PChar = Pointer($00000001); b: PChar = Pointer($00000002)): <br>function GetStr(a: PChar = nil; b: PChar = nil): PChar;<br>function GetStr(a: PChar = nil; b: PChar = Pointer($00000001)): PChar;<br>给楼主一点建议(我说话直,但并无恶意):<br>参数的默认值不是什么高科技,即使您的程序里大量用了这种方法,也不能表明你的程序高级到哪里去。如果您真的想连接两个 PChar,Delphi 有现成的函数 StrCat 和 StrLCat,谢谢!