Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-pascal / 2010-01

Some StrToTime questions

1 message · 1 person ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Bart

Since the current implementation of StrToTime is somewhat flawed (see: http://bugs.freepascal.org/view.php?id=15505), I tried to improve it. This, however left me with some questions about how to treat blanks in the inputstring.

The current implementation treats blanks (#32) as if they were TimeSeparators, which in effect makes it accept strings like "12 34 56" and treat it the same way as "12:34:56" (when (Time)Separator = ':').

In my (old) Delphi (3 Pro), TimeToStr does not accept #32 as separator between the digits, not even when you do an explicite SysUtils.Timeseparator := #32.
Newer versions of of Delphi, so I'm told, also accept milliseconds to be specified, if preceeded by DecimalSeparator.

So my first question is how do recent Delphi's (D7 and up) handle the follwong inputstrings:

Assuming TimeSeparator = ':' and DecimalSeparator = '.'

TimeToStr('12 34 56 am')
TimeToStr('12 34 56 789')
TimeToStr('12 34 56 .789') //notice the decimalseparator

Set TimeSeparator = #32, DecimalSeparator = '.'

TimeToStr('12 34 56 am') //the #32 before "am" is especially interesting in this case
TimeToStr('12 34 56 789')
TimeToStr('12 34 56 .789') //notice the decimalseparator

Set TimeSeparator = ':', DecimalSeparator = #32

TimeToStr('12 34 56 am')
TimeToStr('12 34 56 789')
TimeToStr('12 34 56 .789') //notice the decimalseparator

Set TimeSeparator = #32, DecimalSeparator = #32

TimeToStr('12 34 56 am') //the #32 before "am" is especially interesting in this case
TimeToStr('12 34 56 789')
TimeToStr('12 34 56 .789') //notice the decimalseparator

Delphi 3 rejects all give strings in all cases.

I'd be obliged if someone can test with recent Delphi version.

My second question is:
- If recent delphi's also reject #32 as seperator between digits, should we implement fpc's TimeToStr to behave like Delphi, or do we want to maintain "backwards compatibility", so that older programs which rely on this feature will still be able to function?

Bart

Reply by email