Library and Tool Change List
(January - December 2005 releases)


        


Version released at this point: 6.3.1.0001

September 14, 2005

   1)   Entry Title: Reports.WrForm duplicates the header on pages 2 to N
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: When Reports.WrForm is called enough times that it starts
                     on page 2 part of the header is duplicated.  On all
                     subsequent pages after that there is duplication.

         Correction: Inside the Reports package the routines end up calling
                     each other recursively to to the job of printing out the
                     footer, header and then the requested form when going
                     over a page break.  Found that when the footer or header
                     forms are brought into memory during this process a
                     pointer that was pointing at the current form to be
                     printed changes and is pointed to the footer or header
                     form.  When the recursion winds back out a flag is
                     supposed to be set to tell it to change the pointer back
                     to the original form.  The flag was not being set
                     properly so the pointer was left pointing at the old
                     header form to finish pumping out the data.


   2)   Entry Title: GetFieldB using a repeat field not working past the 8th
                     repeat
      Area Affected: Delphi
             Status: Complete

        Description: When GetFieldB is used on boolean repeat fields the
                     values past the eight repeat cannot be retrieved.

         Correction: Found that during conversion from Modula-2 to Delphi a
                     mistake had been made in code that simulated a bitset
                     operation.  The error resulted in not being able to check
                     the status of bits past the first eight.


September 12, 2005

   1)   Entry Title: Sage.OpenSystem - Getting an error if values too large
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: When large values are used in the OpenSystem call it can
                     cause an access violation.

         Correction: Found a check that was a carry over from DOS days.  It
                     used to be that the total allocation of memory which
                     included the Buffer size value plus the number of screens
                     and forms plus some internal buffer could not go over
                     65,500 bytes in size (the size of a segment).  So passing
                     in a large value for Buffer size plus also passing in
                     large values for number of screens and forms could end up
                     exceeding this value.  Now that SageST is completely
                     converted away from DOS this restriction is no longer in
                     place.  The check has been changed so large values can
                     now be used in the OpenSystem call without causing harm.


September 07, 2005

   1)   Entry Title: Sage.ProcessRecordsHandle - New routine added.
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: Need a process records type routine but with a pointer in
                     passed through to eliminate the use of global variables
                     to communicate with the callback routine.

         Correction: Added the routine Sage.ProcessRecordsHandle which has a
                     pointer parameter.  You can use this as a pointer to a
                     record structure to communicate data between the calling
                     routine and the callback routine while processing
                     throught the records.


   2)   Entry Title: ObjPropSheet.RunExtra - New routine added
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: Need a routine for property sheets that allows you to
                     pass through a handle (pointer) to data that you can
                     access in the call back routines.

         Correction: Added an ObjPropSheet.RunExtra routine that allows you to
                     pass through a pointer to data that you can access in
                     the callback routines.


August 24, 2005

   1)   Entry Title: HashLib.SizeOf - Name changed to HashLib.GetSize
      Area Affected: M2, Delphi
             Status: Complete

        Description: The routine named SizeOf must be renamed because of a
                     conflict with a reserved word in Delphi.

         Correction: The routine HashLib.SizeOf was renamed to
                     HashLib.GetSize.


August 22, 2005

   1)   Entry Title: PutFieldA - Getting a numeric overflow in this routine.
      Area Affected: Delphi
             Status: Complete

        Description: Getting a numeric overflow from PutFieldA when using a
                     money type field.

         Correction: Found a conversion error from M2 to Delphi that caused
                     cardinals to go negative.


August 09, 2005

   1)   Entry Title: CtrlLV - Corrected an error with the new striping capability
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: Getting a nil pointer error when using the striping
                     command.

         Correction: Found a local variable being used in place of a global
                     variable.


August 02, 2005

   1)   Entry Title: Sage.TotalRecordsX - Found that the export command was not
                     properly defined
      Area Affected: Delphi
             Status: Complete

        Description: Users are getting an error on the Sage.TotalRecordsX
                     routine.

         Correction: Found that the export clause for the routine was not
                     properly defined.


   2)   Entry Title: SageSTEditMasks - Changed all numeric codes in the masks to
                     us an optional character
      Area Affected: Delphi
             Status: Complete

        Description: The numeric mask character needs to be changed from a '0'
                     to a '9' to make the numbers optional.  With the '0'
                     definition the control is difficult to clear out.

         Correction: Changed the numeric character to a '9' to make clearing
                     the EditMask control easier.


Version released at this point: 6.3.1.0000

July 27, 2005

   1)   Entry Title: M2 and Delphi libraries use of parameters tightened
      Area Affected: M2, Delphi
             Status: Complete

        Description: Currently parameters of procedures and functions are
                     defined as 'var' or nothing in our M2 and Delphi code.

         Correction: Found a compiler bug in Delphi related to using
                     parameters that were not 'var' but were also not 'const'.
                     In all of SageST we treat the params as if they are
                     only 'var' or 'const' but have not explicitely used the
                     'const' designation.  In order to 1) work around the
                     Delphi bug and 2) to keep all code baselines as similar
                     as possible all Modula-2 and Delphi code now either
                     declares params as 'var' or as 'const', they are NEVER
                     left with just no designation.   While doing this I did
                     uncover a few places where there were logic errors as the
                     parameter was being changed as if it were a var when it
                     was not.  So the change was not being passed back out of
                     the routine.  Using this stricter guideline now for all
                     parameter declarations will ensure that there will not be
                     any misuse of the values.  If a param is 'const' then
                     the compiler will be able to enforce that there are no
                     casual changes.



                     Because of this change (which does NOT affect Ada users
                     at all) all M2 and Delphi callback routines passed to
                     SageST MUST also declare their params as 'var' or
                     'const'.


   2)   Entry Title: CtrlLV - Added a message GetItemPicture and GetHDC routine
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: Added a new message for the LV control called
                     GetItemPicture

         Correction: The GetItemPicture allows you to intercept the update for
                     each entry.  At that point you can call CtrlLV.GetHDC to
                     get the HDC for the individual entry.  Using the HDC you
                     can draw anything you want, including bitmaps to the
                     area.


   3)   Entry Title: New SageST release number
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: SageST release number moved to 6.3.1.0000

         Correction: The SageST release number was moved from 6.3.0.0012 to
                     6.3.1.0000.  The change is in the third field which
                     designates that a change more than just bug fixes has
                     taken place.  This is due to the change of params in all
                     M2 and Delphi code to use only 'var' and 'const'
                     designations.


July 26, 2005

   1)   Entry Title: WinTools.GetVersionInfo not returning correct information
      Area Affected: Ada, M2
             Status: Complete

        Description: The GetVersionInfo routine does not always return the
                     correct value.

         Correction: Found an array pointer that was not being used
                     corrrectly.


   2)   Entry Title: CtrlLV.SetStriping - Added new routine to allow striping
                     the data rows
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: New routine CtrlLV.SetStriping added to the LV control.

         Correction: Added a new routine which when used will strip the rows
                     of data with alternating white/gray colors to better
                     distinguish the data.


July 25, 2005

   1)   Entry Title: Sage.ProcessRecords and Sage.ReadRecordX combination not
                     working
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: If a Sage.ReadRecordX call is made inside the callback
                     routine of Sage.ProcessRecords the call will not find the
                     correct data.

         Correction: Found that the file handle was being copied and so
                     information about the current position in the file could
                     get out of sync between the two copies.


July 20, 2005

   1)   Entry Title: General code modification to remove misuse of reserved
                     words.
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: There is a general use of reserved words such as
                     'repeat', 'class' and 'name' that is causing problems
                     when porting the code between languages.  Even though the
                     compiler will allow a reserved word to be used as a
                     variable name or a record field name it is not a good
                     idea.

         Correction: Used an automated tool to identify all use of reserved
                     words in a 'naughty' fashion.  Went through all the code
                     and corrected this problem.  Some words that were changed
                     may not have been from that original language but was a
                     word that could not be used if the code was ported to one
                     of the other major languages we rely on.  This should
                     enhance code portability now and also keep the code
                     looking the same as much as possible no matter what
                     language it is in (which helps me greatly with
                     maintenance).  To users in Modula-2 and Delphi the change
                     in routine parameter names should be invisible.  However
                     in Ada if the user has used named params in the calls
                     they will have to be changed.  For example if in the
                     Files.Open call you used 'Name => [YourFileName]' then
                     the compiler will catch that and make you change it to
                     'FileName => [YourFileName]'.  There should not be enough
                     of those to require more than just a little bit of time
                     on the first recompile with this release of SageST.
                     However for all languages you will have to change any
                     record field names that I had to alter although I did not
                     have to touch very many that are externally used by all
                     of you (i.e. if a field of a record was called 'repeat' I
                     would have changed that to 'FldRepeat'.  So for example
                     a MyRec.repeat becomes MyRec.FldRepeat).  Most of these
                     changes caused changes for the compilation of SageST,
                     only minor changing for the external users.



                     This was a problem that has been growing in scope as I
                     changed more and more Modula-2 code over to Delphi.  I
                     finally decided that it was time that I stopped the
                     problem at the source by cleaning up the original M2 code
                     as well as making the same changes in the Ada to keep it
                     aligned with the rest.  I do not take lightly when I
                     cause you to have to make code changes but this was
                     necessary for the future maintenance of all of SageST,
                     especially now that all three main languages are heavily
                     used.


July 15, 2005

   1)   Entry Title: QueryLib - the routines PerformQuery and PerformSearch
                     parameters throw Access Violation
      Area Affected: Ada
             Status: Complete

        Description: When the routines QueryLib.PerformQuery and
                     QueryLib.PerformSearch are called they throw an access
                     violation.

         Correction: Found that the parameter order did not match the order of
                     the dll code parameters.  In the Ada copy only the
                     parameters have been rearranged to match the dll code.


July 13, 2005

   1)   Entry Title: Edit Masks for TEditMask control
      Area Affected: Delphi
             Status: Complete

        Description: Need to have a set of SageST compatible edit masks for
                     the TEditMask control.

         Correction: Added a new file called SageSTEditMasks.dem that will
                     contain standard edit masks to match the current SageST
                     fields types as well as additional useful masks.  If you
                     are using Delphi and use a TMaskEdit component you can
                     then open this file and use these masks to control the
                     user entry.  You can also start with any mask that has
                     been defined and modify it to fit your needs.  See the
                     Delphi help for the MaskUtils.TEditMask Type for further
                     information.


July 11, 2005

   1)   Entry Title: ConvertReal - Sometimes not putting decimal in correct
                     position.
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: Found some values that did not return with a correct
                     decimal position if the value had to be rounded before
                     returning with the requested number of decimal positions.

         Correction: Modified the roundup algorithm to this time handle all
                     values correctly.


July 07, 2005

   1)   Entry Title: Sage.NewRecordX - Not popping up SageErrors
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: The Sage.NewRecordX does not pop up SageErrors if it
                     encounters them.  For example if the relation is closed
                     when this routine is called it sets a
                     SageErrs.RelationNotOpened error but you never see it.

         Correction: Added code to do the popup message if an error has been
                     set.


   2)   Entry Title: Sage.TotalRecordsX - Need this routine to be added
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: Need a routine so that an XHandle can be used to find out
                     the number of records.

         Correction: Added a Sage.TotalRecordsX routine.


July 01, 2005

   1)   Entry Title: Sage - Need CompareField 'X' routines
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: Need to have CompareField routines using the 'X' handle.

         Correction: Added CompareFieldAX, CompareFieldCX, CompareFieldFX,
                     CompareFieldIX and CompareFieldRX routines.


June 27, 2005

   1)   Entry Title: Sage.PutFieldA - Error on Floating point fields
      Area Affected: Delphi
             Status: Complete

        Description: If doing a PutFieldA to a floating point field it can
                     cause an error if the value is formatted such as 0.0002.

         Correction: Overrunning the length of a string by 1.  Note that this
                     is only in the Delphi version.


   2)   Entry Title: Sage.GetFieldBX - Need this routine added.
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: There is not a GetFieldBX routine in the system.

         Correction: Added the GetFieldBX routine to all platforms.


June 21, 2005

   1)   Entry Title: Sage.GetFieldB not working
      Area Affected: Delphi
             Status: Complete

        Description: Found that GetFieldB was not working correctly.  In fact
                     it would always return false.

         Correction: Note that this is a Delphi only problem.  Found some of
                     the converted code (from Modula-2 to Delphi) that just
                     didn't work the same way.  Added logic to correctly get,
                     assess and return the value in the Delphi version.


June 15, 2005

   1)   Entry Title: Profile - Need params to handle encountering a read only
                     .ini file
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: Need params added to handle encountering a .ini file that
                     is read only.

         Correction: Added two params called CanModify and ShowModMessage.
                     CanModify can be checked after the routine returns to
                     check whether you will be able to do updates on this
                     handle.  If CanModify is TRUE going into the routine
                     indicating to the routine that you intend to make changes
                     using this handle and if you have set the ShowModMessage
                     flag then if the .ini file happens to be read only a
                     message will be shown inside the routine letting you
                     and/or the user know that there is going to be a
                     problem.



                     The most noticable locations where you might see these
                     messages is during the editing of dialogs and when Thor
                     is in use.  If the message pops up it will include the
                     name of the .ini file that is currently set to read only
                     but is being written to.


June 07, 2005

   1)   Entry Title: Correction in how OpenSystem finds the .dfl file
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: The algorithm that locates the .dfl file inside the
                     OpenSystem call was corrected slightly.  When doing
                     debugging and using an alternate path as the run path the
                     OpenSystem call could still be fooled into finding the
                     .dfl file in the original folder.

         Correction: Corrected the algorithm so that it should correctly find
                     the .dfl file in the run path specified in the debugger,
                     not in the original path.  The problem was that if there
                     was not a .cfg file being used then a call was being made
                     the the OS to locate the .dfl file which found the wrong
                     copy first.



                     1) To illustrate the problem think of having the folders
                     \MyStuff\MyCompileDir and \MyStuff\MyTestDir.



                     2) You compile your application to
                     \MyStuff\MyCompileDir.



                     3) In the debugger you set the execution path to be
                     \MyStuff\MyTestDir.



                     4) You have a copy of your .dfl file that happens to be
                     sitting in both the MyCompileDir and one in MyTestDir.



                     5) Inside the OpenSystem call it would search for a .cfg
                     file in the MyTestDir.  If it did NOT find one it then
                     asked the OS to search for the .dfl file.  The OS
                     searched the MyCompileDir before it searched the
                     MyTestDir.  So it would find the copy of the .dfl in the
                     wrong place and try to open that copy.



                     In my test case the two copies of the .dfl were not the
                     same so it would throw 'Version Conflict' errors, even
                     though I could check and everything in my run directory
                     should have worked.  From everything I had set up I was
                     thoroughly convinced it was trying to correctly open the
                     .dfl in the MyTestDir when underneath it had incorrectly
                     tried to open the copy in the MyCompileDir.


May 18, 2005

   1)   Entry Title: Sage.FindRecordN is getting a nil pointer if a value of 0
                     is used
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: If a value of 0 is used as the record number then a nil
                     pointer exception is being thrown.

         Correction: Found that the logic did not correctly handle the 0
                     value.  Corrected the logic.


   2)   Entry Title: Delphi version now being built with Delphi 2005
      Area Affected: Delphi
             Status: Complete

        Description: The Delphi version of SageST is now being built using the
                     Delphi 2005 compiler.

         Correction: Prior versions of SageST used the Delphi 7 compiler.  Now
                     the Delphi 2005 compiler is used to build all SageST
                     Delphi libraries.


May 04, 2005

   1)   Entry Title: Sage - Need a new routine to check if a particular system
                     is open.
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: Need a new routine called Sage.SystemIsOpen to find out
                     if a particular dfl file is already opened.

         Correction: Added the routine Sage.SystemIsOpen and also
                     MultSage.SystemIsOpen.  This routine takes the name of a
                     dfl file and returns a boolean value to show if that
                     system has already been opened.


Version released at this point: 6.30.0012

April 25, 2005

   1)   Entry Title: ConvertReal.RealToStr - A decimal placement error returns
                     incorrect string
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: Found an error when converting to string that causes
                     values rounding from 0.95 and up to incorrectly return
                     the string as 10.0 instead of 1.00.

         Correction: Corrected the logic to return the proper string.


   2)   Entry Title: TimeReal - Getting incorrectly rounded results from the
                     routines.
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: Getting values from these routines that are just slightly
                     off.

         Correction: Found that the parameter types needed to be converted to
                     long float (64 bit) values.  The 32 bit values were
                     causing slight rounding problems.


Version released at this point: 6.30.0011

April 18, 2005

   1)   Entry Title: LogLib.GatherLogFiles - Gets into endless loop if empty log
                     file encountered
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: If an empty log file (one that contains only the header,
                     no records) is encountered the routine can get stuck in
                     an endless loop.

         Correction: Added code to correctly handle a log file that only
                     contains the header.


   2)   Entry Title: Logging - Added code to get rid of an empty log file when
                     closing
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: Need to clean up empty log files when leaving the system.

         Correction: Added code to detect that if the system is being closed
                     and the log file contains no entries, only the header,
                     that the log file is deleted.


   3)   Entry Title: Files.GetPathFileName - Added a new routine to get the
                     complete name
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: Need a routine that returns the complete file name
                     including the path that is associated with a file handle.

         Correction: Added the routine Files.GetPathFileName.  This returns
                     the full path and name of the file associated with the
                     handle.  Note - the other routine called
                     Files.GetFileName only returns the name as you passed it
                     in.  If you did not have a path on it then the return
                     value will not have a path.  The new routine,
                     Files.GetPathFileName, will return the path to the file
                     even if you did not have the path on it originally.


Version released at this point: 6.30.0010

April 08, 2005

   1)   Entry Title: Sage.GetRepeatName - Can get past 'Array Too Small' warning
                     message
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: If a very short string is passed for the target of the
                     repeat name this routine still does not post a warning
                     message

         Correction: Found an additional path in the logic that returned after
                     failing to set the name because of the target string
                     being too small.  In this case it bypassed even the
                     recent logic that was put in place to detect this error.


   2)   Entry Title: LogLib.UpdateDatabase - Getting an error of 'Field Not
                     Defined'
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: Getting a 'Field Not Defined' error from this routine.

         Correction: Found that a local variable used to hold the block field
                     name was not declared large enough to hold the name and
                     the repeat value.


Version released at this point: 6.30.0009

April 07, 2005

   1)   Entry Title: LogLib - UpdateDataBase not correctly handling commands
                     following a RelationDelete
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: When a log file is processed it is not handling the
                     commands properly that follow a RelationDelete command.

         Correction: Found that when a RelationDelete command was processed it
                     accidentaly removed (or never processed) the command
                     immediately following.


Version released at this point: 6.30.0008

March 21, 2005

   1)   Entry Title: FixLib - Getting an access violation when ReStructure is
                     called
      Area Affected: Ada
             Status: Complete

        Description: Getting an access violation when the FixLib.ReStructure
                     routine is called in Ada.

         Correction: Found that the parameter order did not match the dll
                     code.  Reordered the parameters to match.


   2)   Entry Title: WinTools.ProgramInstanceRunning renamed to
                     WinTools.ProgramWindowRunning
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: The routine WinTools.ProgramInstanceRunning is slightly
                     misleading.  Although it can sort of detect if an
                     instance of this program is running it is only looking
                     for a matching window name.

         Correction: Renamed the routine to be WinTools.ProgramWindowRunning
                     to better reflect its function.  Instead of using this to
                     detect if you already have a copy of your application
                     running it would be better to use the WinTools.GetMutex
                     and WinTools.ReleaseMutex routines.


March 17, 2005

   1)   Entry Title: Messages - Need the ability to filter all messages passing
                     through
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: Need a way to have all messages pass through the
                     MessageIntercept routine so that the user has full
                     control over all messages.

         Correction: Added code to direct not just error messages but instead
                     to send all messages through the MessageIntercept proc.


March 16, 2005

   1)   Entry Title: LogLib - Hanging up trying to gather multiple log files
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: The routine GatherLogFiles is hanging up while processing
                     the logs.

         Correction: Found that if the final entry in a log file was
                     RelationDelete that it did not correctly process the
                     command and exit.


March 14, 2005

   1)   Entry Title: SageBttn - Getting an access violation at times.
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: Getting an access violation out of the SageBttn when
                     used.

         Correction: Found that a structure did not have all of its members
                     initialized before passing it to a Win32 API call.


Version released at this point: 6.30.0007

February 28, 2005

   1)   Entry Title: Sage.PutFieldB - Getting an overflow exception
      Area Affected: Delphi
             Status: Complete

        Description: Getting an overflow exception when using the PutFieldB
                     routine.

         Correction: Found a logic error in the BitLib.Incl routine that cause
                     an overflow.  This was only in the Delphi library.


February 25, 2005

   1)   Entry Title: Field and message check routines
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: Found that the routines such as DefineFieldCheck or
                     DefineMessageIntercept do not catch if the user tries to
                     set a null value as the proc.

         Correction: Added checks so that if the user does not pass a proc but
                     instead passes a null value the resulting check routine
                     is set back to the defaults of CheckLib, FormChk and
                     MsgCheck routines instead of simply being set to null.


Version released at this point: 6.30.0006

February 17, 2005

   1)   Entry Title: Field Check routines - Found that the field check routines
                     sometimes get bypassed.
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: Sometimes the field checking routines are not being
                     executed properly.

         Correction: Found an internal flag that was being set prevented
                     further checks of the fields.  Altered the logic that set
                     that flag to only set it at the proper times.


February 10, 2005

   1)   Entry Title: ConvertReal - Getting the decimal in the wrong position
                     when converting to string
      Area Affected: Ada, M2, Dephi
             Status: Complete

        Description: The decimal is getting in the wrong position of the
                     string when doing a conversion that is a number less than
                     1.0.

         Correction: Found that the logic miscalculated the decimal position
                     on numbers less than 1.0.  Added a check to correctly
                     position the decimal.


February 09, 2005

   1)   Entry Title: ConvertReal - Getting the decimal in the wrong position
                     when converting to string
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: Getting the decimal back in the wrong position if the
                     number gets rounded up or down resulting in one less or
                     one more digit in front of the decimal.

         Correction: During the conversion process the decimal position was
                     detected and then the conversion took place including any
                     rounding.  Once that complete the decimal was placed
                     back into the string however it did not account for the
                     digits preceding the decimal either increasing or
                     decreasing due to the rounding.  Added the correct logic
                     to move the decimal to the correct position.


Version released at this point: 6.30.0008

February 08, 2005

   1)   Entry Title: Sage.PutFieldF - Found a case were it was not properly
                     rounding values up.
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: Found that the routine did not correctly round floating
                     point numbers up.  For example the value 123.125 when put
                     into a field with 2 decimal places ended up as 123.12.

         Correction: Found a logic error created during a recent change that
                     corrected a previous problem of incorrectly rounding
                     down.  This created a situation that would then cause an
                     incorrect round up.


Version released at this point: 6.30.0006

February 02, 2005

   1)   Entry Title: Sage.DeleteRelation - Found this routine resets the Fatal
                     Error flags to true
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: Found that no matter what the current setting of the
                     Fatal Error flags is this routine resets them to TRUE on
                     exit.

         Correction: Added code to capture the current setting of the flags
                     and set back to that value upon exit.


February 01, 2005

   1)   Entry Title: ErrorLog.LogFloat - Type changed to allow for long float
                     values
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: The parameter type needs to be a long float to this
                     routine so that all possible values can be logged.

         Correction: Changed the parameter type from a float to a long float
                     value.


January 27, 2005

   1)   Entry Title: LogLib - GatherLogFiles does not correctly collect all logs
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: The routine LogLib.GatherLogFiles does not correctly
                     gather together the log files and in fact seems to lock
                     up during the process.

         Correction: Found that the addition of the new log entry for
                     RelationDelete was not correctly being handled in the
                     process that gathers multiple log files together into a
                     single log file.   When that entry was hit it thought
                     that it was finished processing and quit.  Also it did
                     not correctly close the last file so later processing to
                     delete the entries and rename a temp file into a final
                     name of [SomeName].a01 failed.


   2)   Entry Title: RTF - Getting an overflow error while writing data
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: Getting an overflow error while writing out data to the
                     RTF file.

         Correction: A test to see how much data to write out was incorrectly
                     written.  It was taking the length of the string minus
                     one and never checked or guarded against the string being
                     zero length.


January 25, 2005

   1)   Entry Title: CtrlLV - Getting an overflow exception
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: Getting an overflow exception when doing a reset on the
                     control.

         Correction: Found code that did not check if a returned value was
                     within a valid range.  Added a check and default value to
                     guard against overflowing the number.


   2)   Entry Title: CtrlLV.SetHeaderFont has added parameters
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: The routine CtrlLV.SetHeaderFont has two new parameters.

         Correction: The new parameters are the DialogId and the ControlId.
                     These are necessary for the call to set the font for the
                     correct control.


January 24, 2005

   1)   Entry Title: Thor - List of resource dialogs not included needs to be
                     larger
      Area Affected: Thor
             Status: Complete

        Description: The list of dialogs found in the resource but not
                     included in the .src needs to be larger.  If there is one
                     that you want that does not appear on the list you have
                     to add everything in front of it first before you can see
                     it even if you did not want to include the others.

         Correction: Increased the list size from 100 to 5,000 items.


January 20, 2005

   1)   Entry Title: Files.SetFilePos - Takes more and more time to process as
                     file size increases
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: Found that the Files.SetFilePos routine seems to take
                     longer and longer as the file size increases.

         Correction: Found code that was eating up time but not doing anything
                     productive in the SetFilePos call.  Cleaned this up and
                     the time for the SetFilePos routine to execute is now
                     about 30% less than before.


Version released at this point: 6.30.0005

January 19, 2005

   1)   Entry Title: ObjPropSheet - Not correctly finding the symbol file
      Area Affected: Thor
             Status: Complete

        Description: When ObjPropSheet is used in Thor to display the current
                     property sheet it does not correctly find the symbol
                     file.

         Correction: Added code that reversed the order that it tries to find
                     the symbol file name.  Now it looks at the .ini file
                     first then at the internal name stored in the .res file.


   2)   Entry Title: ObjPropSheet - No error given when a dialog is not found
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: When one of the dialogs cannot be found in the .res file
                     ObjPropSheet goes ahead and tries to display the property
                     sheet anyway resulting in an access violation.

         Correction: Added code to check for the error.  If found a message
                     with an OK button is displayed explaining that a required
                     dialog was not located.  Then the routine exits without
                     trying to display.  This avoids the access violation
                     problem.


January 18, 2005

   1)   Entry Title: Wintools.GetFileVersionInfo - Getting an array bounds error
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: Getting an array bounds exception from the
                     WinTools.GetFileVersionInfo routine.

         Correction: Found an assignment where a string was sliced to assign
                     to another variable.  The requested slice in some
                     conditions ended up as [0 .. -1].  Added code to detect
                     and correctly handle that condition.


January 17, 2005

   1)   Entry Title: Sage.CompareFieldA - Wrong return value on concat field.
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: ComparefieldA does not return the correct value when
                     evaluating a concat type field with an operation of EQ
                     and the value in the field would be equal.

         Correction: The checking of a concat field happens in a two phase
                     method.  Found that phase one completed corrected but an
                     erroneous logic check just before phase two of the pass
                     caused the return to return without the final check.  The
                     resulting return value would always be false under these
                     circumstances.


January 14, 2005

   1)   Entry Title: Sage - X routines contain a nil pointer error
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: There is a nil pointer error coming from the X routines.

         Correction: Found a logic problem that deallocated a pointer too
                     soon.  Further use of the pointer resulted in a nil
                     pointer error.


   2)   Entry Title: Sage.GetRepeatName - Silently fails if the target string is
                     too small.
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: Found that if the target string that was supplied is not
                     big enough to hold the final value the routine does not
                     show an error and the resulting string is only the
                     partial result.

         Correction: Added code to check that the final value will fully fit
                     in the target string.  If it will not the MinorError
                     'ArrayTooSmall' is set and will pop up if Minor Errors
                     are turned on.


January 10, 2005

   1)   Entry Title: WinReports - Added a new routine RTFDefinePageOrientation
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: Need a routine to control page orientation in RTF files.

         Correction: Added the routine WinReports.RTFDefinePageOrientation.


   2)   Entry Title: Sage - Need a GetBlockX routine.
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: Need a Sage.GetBlockX routine.

         Correction: Added a routine to get block data using an X handle.  The
                     routine is Sage.GetBlockX.


   3)   Entry Title: SortMrg - Increased the default minimum buffer to 50,000
                     bytes
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: If certain sizes of data are passed in to SortMrg the
                     current 5,000 byte buffer causes a problem.

         Correction: Increased the default buffer to 50,000 bytes in size.


   4)   Entry Title: CtrlLV - Added new routines GetHighlightedPosition and
                     SetHighlightedPosition
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: Need new routines to work with the highlighted position.

         Correction: Added new routines CtrlLV.GetHighlightedPosition and
                     CtrlLV.SetHighlightedPosition.


   5)   Entry Title: ObjPropSheet - Property Sheets were not being properly
                     closed.
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: Property sheets are not being correctly closed out.

         Correction: Corrected the error.


Version released at this point: 6.30.0004

January 03, 2005

   1)   Entry Title: Profile - Put and Get routines sometimes fail
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: The Put and Get routines are failing, especially if
                     called from the Ada interface.

         Correction: Found that the routines internally called some Win32
                     functions that required the SectionName and KeyName
                     values to end in a nul character.  If a literal value was
                     used as one of these params it did not end up null
                     filled.  Added code to internally ensure that these
                     values end with the null character when passed to the
                     Win32 function.


   2)   Entry Title: Sage.SetPW and Sage.ClearPW - Not setting SageError
      Area Affected: Ada, M2, Delphi
             Status: Complete

        Description: The Sage.SetPW and Sage.ClearPW routines do not set
                     SageError.  Since they are a Sage routine most users
                     would be expecting the value to be set.

         Correction: Added code to set SageError when these routines are
                     called.


   3)   Entry Title: Thor - Getting an index range problem when adding the first
                     relation.
      Area Affected: Thor
             Status: Complete

        Description: When starting a new schema and adding the first relation
                     Thor throws an index range error.

         Correction: Found that a recently altered piece of code was checking
                     an array that had not yet been set up when the first
                     relation of a new schema was added.  This problem did not
                     happen if any relations already existed.




        
      

 

Current Changes

 


Send mail to: warren.merrill@inl.gov with questions or comments about this web site.
Copyright © 1989-2006 Battelle Energy Alliance