[Gambas-user] Strange problem with Date Time and ValueBox

Benoit Minisini gambas at ...1...
Tue Mar 11 13:42:44 CET 2008


On samedi 8 mars 2008, Richard wrote:
> I have a little program which I wrote for the last winter Ashes tour. It
> provides a way to do timer controlled recordings from radio programmes
> streamed by the BBC and played by Helixplayer.
>
> I have tinkered with it from time to time to bloat its feature set and keep
> it up to date with various key changes to the Gambas2 environment. The
> current working version is in use recording each day's play in the 3 test
> series under way in New Zealand. It runs on Gambas2 v2.0 with a backported
> bug-fix for the date chooser control which Benoit kindly provided.
>
> I have always found plenty to confuse me when handling dates and times in
> Gambas but having converted from my own customised versions of the DateBox
> and TimeBox controls to the new ValueBox control I had reviewed the date
> and time handling code to make sure I am not doing any redundant
> conversions.
>
> Something I changed recently introduced a bug to the
> store-recall-timer-settings process. A date and time entered as {02/03/2008
> 15:45:11} is changed, when it is recalled from a storage array, to
> {02/03/2008 00:41:26}.
>
> A lot of time spent tracing through my over-complex logic eventually
> located the probable "cause" in part of the code which restores a
> previously stored collection of settings.  The relevant code snippet is:
>
>         'Timer tab controls
>         LineRecord.StartDateChooser.Value = Date(records[ix].Start_Time)
>         LineRecord.StartDateBox.Value = Date(records[ix].Start_Time)
>         'Do not trigger selected Change events
>         LineRecord.INC_autoset
>         LineRecord.HourTimeSet.Value = Hour(records[ix].Start_Time)
>         LineRecord.MinuteTimeset.Value = Minute(records[ix].Start_Time)
>         LineRecord.SecondTimeSet.Value = Second(records[ix].Start_Time)
>         'Re-enable selected Change events
>         LineRecord.DEC_autoset
>         'LineRecord.StartTimeBox.Value = Time(records[ix].Start_Time)
>         LineRecord.StartTimeBox.Value = (records[ix].Start_Time)
>
> In the last two lines the version commented out is the line which
> introduces the incorrect time. The line below works just fine. The records
> array is an array of objects of Class Recording. The Recording.Start_Time
> property is a Date value with both date and time parts.
>
> Until this week the first two lines, and the penultimate, simply assigned
> the whole date/time value to the DateChooser, StartDateBox  and the
> StartTimeBox. I decided to make it more "correct" after reading about the
> Date and Time conversion functions. Only the Time(date_variable) line is
> "wrong". Reverting to the old sloppy way fixes the problem.
>
> Here's the question: Has anyone come across a similar problem in date/time
> handling? I have tried replicating the problem in independent code with no
> success.
>
>
> Richard
>

Can you provide the full source code? And can you use DEBUG or PRINT 
instruction to the prints the value of records[ix].Start_Time before 
assigning it?

Regards,

-- 
Benoit Minisini




More information about the User mailing list