The Perils of Format

The Perils of Format

Format is good. Format is bad.

The good is that you can create very nice translatable strings which can deal with reordered parameters, and that perform fairly well.

if Language = Yoda

then fmt := ‘%1:s apples, %0:d you took.’

else fmt := ‘you took %0:d %1:s apples.’; // English

Writeln(Format(fmt, [5, ‘green’]));

So, what is the pain?  All the checks are done at run time.

Let me repeat that: … at run time.  

Once again, during a hotfix, I blew it on the parameter type, mistakenly passing a Double into the position where an Integer was expected.

I really wish that there was compiler magic that could validate the type and position of the Format parameters at compile time.  Until there is, I will be careful to send all parameters as strings, and convert to string in the Format argument list – at least for the quick fixes.