<html><body><pascaldragon@googlemail.com><br>>> I am trying understand how FPC determines which version of <br>>>overloaded<br>>> function to call.<br>>> Take as example these 2 functions (from SysUtils):<br>>> 1. function StrPLCopy(Dest: PChar; Source: string; MaxLen: <br>>>SizeUInt):<br>>> PChar; overload;<br>>> 2. function StrPLCopy(Dest: PWideChar; const Source: UnicodeString;<br>>> MaxLen: SizeInt): PWideChar; overload;<br>>><br>>> And in program I use:<br>>> var p: pointer;<br>>>       s: string;<br>>> begin<br>>>    StrPLCopy(p, s, 10);<br>>> end;<br>>><br>>> It seems, that 2nd "unicode" version of StrPLCopy is called. But <br>>>why?<br>>> I am thinking as:<br>>> 1st parameter is untyped pointer, so no one of function can be <br>>>prefered<br>>> 2nd parameter is "string" which exactly match 1st function signature<br>>> 3rd para
 meter is "integer constant" which mach both signatures<br>>><br>>> So it seems to me, that 1st version of function signature matches<br>>> better, because of exact match of 2nd parameter ... why is then <br>>>called<br>>> 2nd version?<br>> <br>> I don't have a explanation for now, but it *might* be important to <br>>note whether you are using 2.6.x or 2.7.1.<br>> </pascaldragon@googlemail.com><div><pascaldragon@googlemail.com><br></pascaldragon@googlemail.com></div><div><pascaldragon@googlemail.com>I observer this with 2.6.4 and also with current 2.7.1</pascaldragon@googlemail.com></div><div><pascaldragon@googlemail.com>But I guess, that this changed sometime in last year, because in older version of 2.7.1 and 2.6.2 1st version was called.</pascaldragon@googlemail.com></div><div>(I can not confirm it now, because I have on all my PC reinstalled older versions with newer)</div><div>-Laco.</div><div><br></div></body></html>