|
|
|
|
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.