(if I use a record I need to find all cals and make sure new parameters are filled as well, for sure this won't happen).
That is true at compile time but, there is a way to ensure all the parameters have been set by each caller at runtime.
Basically, that would allow the program to detect that a particular call failed to fill one or more parameters. It would not be able to detect missing parameters if the function isn't called (which is something the compiler could do if it accepted more than 255 parameters.)
If you're interested in how to implement a runtime solution - which admittedly falls a bit short of your original goal - make it known and I'll present how to go about it.