[fpc-devel] [fpc-pascal] overloading function
LacaK
lacak at zoznam.sk
Wed May 7 06:52:54 CEST 2014
Hi again,
I reply also to fpc-devel list (excuse me, if it is off-topic), because
I would like understand wat is going on.
I attach also simple test program.
I use FPC 2.6.4 but I think, that same happens also with fresh 2.7.1
Thanks
-Laco.
> On 02.05.2014 07:45, LacaK wrote:
>> Hi,
>> 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 parameter 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.
>
> Regards,
> Sven
>
> _______________________________________________
> fpc-pascal maillist - fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: test_StrPLCopy.lpr
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20140507/ece18558/attachment.ksh>
More information about the fpc-devel
mailing list