Also Lazarus forces to enter a default value.
What I doing wrong?
You need to rearrange the order of your parameters.
Any default parameters must be contiguous and at the end of the parameter list.
out parameters cannot have default values.*
So collect any out parameters at the beginning of your parameter list (or at least in front of the ones with default values), and place any parameters with default values at the end.
*That is, out parameters cannot have any default value
defined in the parameter list in the procedure/function signature.
It is good practice to give all out parameters some appropriate default value at the beginning of the procedure implementation.