On Thu, 18 Jan 2024, Hairy Pixels via fpc-pascal wrote:
On Jan 18, 2024, at 1:51 PM, Sven Barth via fpc-pascal <fpc-pascal@lists.freepascal.org> wrote: There is no source for Str() in that sense, because Str() is a compiler intrinsic implemented in the compiler's ninl.pas.Well that explains everything now! What is this an intrinsic? I was curious how it was implemented and now I'm even more curious.
I asked myself the same question. The reason is it needs to support the same syntax as Write(ln) for padding the output: Str(I:N:M,S); This is not a "standard" syntax and needs to be handled specially by the compiler. Additionally, Str() can be used to convert an enum to a string value: Type TMyEnum = (one,two,three); var M : TMyEnum = one; S : String; begin Str(M,S); end. Also something which cannot be handled by 'standard' syntax. (unless you wish to count generics and implicit specialization as "standard syntax") Michael.
_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal