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

Reply via email to