Hi,
How can I zero-pad using Format ? In C, using printf it's done using an extra 0 digit in for the width: '%04d' with parameter 3 will print '0003'. Wouldn't this be useful for FPC's Format as well, or is there another way ?
Micha

Mailing lists / fpc-devel / 2006-06
9 messages · 4 people ·
Reply by email Subscribe to this list Your subscription
Read-only archive. Use j and k to move between messages.
Hi,
How can I zero-pad using Format ? In C, using printf it's done using an extra 0 digit in for the width: '%04d' with parameter 3 will print '0003'. Wouldn't this be useful for FPC's Format as well, or is there another way ?
Micha
Micha Nelissen wroteHow can I zero-pad using Format ?
RTFM. :-)
SysUtils.Format ('%.4D', Some_Int);Vinzent.
How can I zero-pad using Format ? In C, using printf it's done using an extra 0 digit in…
in fpc it's a dot.
Try
%.4dThis is in the docs:
http://www.freepascal.org/docs-html/rtl/sysutils/format.html
Michael.
Thanks, that works.
I did read that page, but only saw 'padded with spaces' and assumed Precision was only applicable to floating point values, as it's "after the dot".
Micha
RTFM. :-) SysUtils.Format ('%.4D', Some_Int); Vinzent.
Sounds like I found a case where 'C' is more intuitive than pascal ;-).
Seriously, isn't "Format" an imitation of C's printf ? At least they are very similar, but on this detail (and maybe some others as well) they are different.
Micha
As if format strings were intuitive at all. :-)
I'd call "Zero_Pad (Some_Int, 4)" definitely more intuitive.
Seriously, isn't "Format" an imitation of C's printf ?
Apart from the fact, that you can get run time type checking? Yeah, I suppose so.
At least they are very similar, but on this detail (and maybe some others as well) they are different.
Well, let's assume it's due to Delphi-compatibility. Probably Borland decided to do it differently just for the fun of it. ;-)
Vinzent.
Sounds like I found a case where 'C' is more intuitive than pascal ;-). Seriously, isn't…
> > SysUtils.Format ('%.4D', Some_Int); Sounds like I found a case where 'C' is more intuitive than pascal ;-).
With a C mindset, yes. There a leading 0 can have meaning. In Pascal an extra leading zero never has meaning.
Seriously, isn't "Format" an imitation of C's printf ? At least they are very similar, but on this detail (and maybe some others as well) they are different.
Yeah. Ah well, maybe in C07 that will be fixed.
It's a formatting string, not a number only. You think a digit *after* the decimal point to be used for integers in front of the whole number is more intuitive ?
Micha
Perfect? no. Better than leading 0? yes.
Leading zeroes that have meaning are an artificial construct. Keep in mind that C users might be aware of deviant use (they are octal numbers as literals), but Pascal users most probably wouldn't think twice.