[fpc-devel] Redefine FillChar() to use out parameter instead

Florian Klaempfl florian at freepascal.org
Thu Nov 19 10:35:08 CET 2009

Graeme Geldenhuys schrieb:
> Florian Klaempfl wrote:
>>> I see many use-cases for out parameters
>> You mean for VAROUT parameters :)?
> I search the latest FP Language Reference document, and there is no
> mention of 'varout'. I also tried to use varout in a procedure as
> follows - which gave a compiler error with FPC 2.4.0-rc1

It is not implemented, but it would be the solution to the fillchar problem.

>  procedure dcpFillChar(varout x; count: SizeInt; Value: Byte); overload;
> vs
>  procedure dcpFillChar(out x; count: SizeInt; Value: Byte); overload;
> First one is not compilable, but the second one is. So no, I don't
> understand your comment about 'varout'? Please explain more.

A VAROUT parameter could have the same semantics as VAR except that the
compiler does not expect that it is needed that it is initialized. But
be warned: with such a parameter type you can easily create memory leaks
with automated types like ansistrings.

More information about the fpc-devel mailing list