>> I am trying understand how FPC determines which version of
>>overloaded
>> function to call.
>> Take as example these 2 functions (from SysUtils):
>> 1. function StrPLCopy(Dest: PChar; Source: string; MaxLen:
>>SizeUInt):
>> PChar; overload;
>> 2. function StrPLCopy(Dest: PWideChar; const Source: UnicodeString;
>> MaxLen: SizeInt): PWideChar; overload;
>>
>> And in program I use:
>> var p: pointer;
>> s: string;
>> begin
>> StrPLCopy(p, s, 10);
>> end;
>>
>> It seems, that 2nd "unicode" version of StrPLCopy is called. But
>>why?
>> I am thinking as:
>> 1st parameter is untyped pointer, so no one of function can be
>>prefered
>> 2nd parameter is "string" which exactly match 1st function signature
>> 3rd para meter is "integer constant" which mach both signatures
>>
>> So it seems to me, that 1st version of function signature matches
>> better, because of exact match of 2nd parameter ... why is then
>>called
>> 2nd version?
>
> I don't have a explanation for now, but it *might* be important to
>note whether you are using 2.6.x or 2.7.1.
>
(I can not confirm it now, because I have on all my PC reinstalled older versions with newer)
-Laco.
_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal