|
|
|
|
Version released at this point: 6.30.0003
December 17, 2004
1) Entry Title: Access violations
Area Affected: Ada
Status: Complete
Description: Sage users report that the last build is throwing access
violations.
Correction: Found that a last minute change to try and improve
compatibility between StonyBrook and ObjectAda had broken
the StonyBrook code. The error is not visible until at
run time when certain routines are called. A parameter
type mismatch between the dll and the ada code causes the
access violation.
December 15, 2004
1) Entry Title: Field Checks - Found and corrected a Field Check bug
Area Affected: Ada, M2, Delphi
Status: Complete
Description: Found that a form did not refresh correctly after doing a
PutField on one of the fields from inside of a Field
Check routine.
Correction: Found that the dll code had one flag that was not set the
same way that the old Ada code used to be. This caused
the form to not get repainted properly after an action
was taken inside of a Field Check routine.
2) Entry Title: Sage.PutFieldF - Found a rounding error
Area Affected: Ada, M2, Delphi
Status: Complete
Description: If a value such as 2.045 is used in PutFieldF to a field
that is a one decimal digit format the algorithm that
tries to round ends up doing a double rounding of the
value so that the final value in the field is 2.1.
Correction: Corrected the algorithm to correctly truncate/round.
Version released at this point: 6.30.0002
December 10, 2004
1) Entry Title: Files.FilePosition - Changed to be a record structure
Area Affected: Ada, M2, Delphi
Status: Complete
Description: The Files.FilePosition should not be a 64 bit numeric
type since not all compilers will support that.
Correction: Changed to a record structure with two double words
representing the two parts of the 64 bit integer. Added
routines to the Files package to support all necessary
arithmetic operations on the type. New routines such as
Files.ComparePositions, Files.AddToPosition and
Files.SetToValue should handle all the tasks that
previous were done with direct arithmetic operations in
the code. This will make the type more portable between
compilers and yet still retain the 64 bits necessary to
work with file positions and sizes in Windows.
December 08, 2004
1) Entry Title: DisplayW - Added two routines that use the DefaultProc
Area Affected: Ada, M2, Delphi
Status: Complete
Description: Need to add routines that use the DefaultProc instead of
making the user supply it.
Correction: Added DisplayFormDefaultProc and
DisplayFormContinueDefaultProc routines that do not need
to have an action proc supplied. They just use the
DefaultProc.
2) Entry Title: MultSage - Removed routines use type 'natural' that were
overloaded.
Area Affected: Ada, M2, Delphi
Status: Complete
Description: Need to remove the routines that use the type 'natural'
that are overloaded. This is causing problems in the
ObjectAda compiler.
Correction: Removed the routines FindRecordI and ReadRecordI that
used the type 'natural' as an argument. This caused
problems in the ObjectAda compiler. Check all code under
our control and nothing used these routines so removed
them.
3) Entry Title: EditLib - Corrected the parameters on the routines
Area Affected: Ada, M2, Delphi
Status: Complete
Description: Changed params slightly in the M2, Ada and Delphi
libraries to bring all of them into alignment.
Correction: The affected routine was RecordEditH.
Version released at this point: 6.30.0001
December 06, 2004
1) Entry Title: SageST release number incremented
Area Affected: Ada, M2, Delphi
Status: Complete
Description: Because of changing the entire Ada side over to be a dll
only interface (instead of some of it being native code)
the SageST designation has been incremented.
Correction: The new release designation for SageST is now 6.3.0 (was
6.2.3).
December 01, 2004
1) Entry Title: Sage.DefineFormFieldEntryProc and Sage.DefineFormIntercept
moved to Display
Area Affected: Ada, M2, Delphi
Status: Complete
Description: The routines Sage.DefineFormFieldEntryProc and
Sage.DefineFormIntercept moved to the Display package.
Correction: These routines fit better in the Display package since
they are only doing things affected by forms.
2) Entry Title: StringsX.MaskAccept - Added new routine
Area Affected: Ada, M2, Delphi
Status: Complete
Description: Added a new routine to StringsX called MaskAccept.
Correction: This routine takes a string and a mask. The mask
contains special characters representing such things as
numbers, upper case, lower case, etc. The routine
evaluates the string against the mask and returns a
boolean value representing if the string is acceptable
against the mask requirement.
November 30, 2004
1) Entry Title: TermX - New key processing routines added
Area Affected: Ada, M2, Delphi
Status: Complete
Description: Added new routines to TermX to assist applications
process key and mouse strokes.
Correction: Added WaitForAnyKey which will cause the SageTerm to wait
for any keystroke from the user. Added
WaitForAndReturnKey which will wait for any key and then
return its value to the calling routine. Added
CleanKeyboardBuffer which will throw away any pending
keystrokes from the user. Added CleanMouseBuffer which
will throw away any pending mouse clicks from the user.
NOTE - These routines are intended for use with the
SageTerm, not with dialogs. Also take note that these
are the correct and safe way of handling key presses in a
SageTerm. I have quite often seen people looking for
keystrokes that only check for the first character and
not any of the two stroke key presses such as the F1 ..
F12 keys.
2) Entry Title: Files.DirQuery - Conversion to dll use requires param change
Area Affected: Ada
Status: Complete
Description: Change to full dll use by Ada required some changes in
the parameters of the DirQuery routine.
Correction: There were two changes required in this routine. The
first change is that the State parameter and the callback
routine switch places. The callback routine name
becomes the second parameter and the State variable
becomes the third parameter. The second change is in the
callback routine. The FileName parameter because of
being a string need to be split into an address-high
parameter pass.
3) Entry Title: Sage.AddressToString - Need this new routine for the
address-high callback routine parameters
Area Affected: Ada, M2, Delphi
Status: Complete
Description: Because of the need to split the string params of any
callback routines (in Ada only) into an address and a
high a routine was needed to convert that back to a local
string for use in the callback routines.
Correction: Added the routine Sage.AddressToString which converts the
value of a string parameter in a callback routine
represented as an address and a high value back to a
local string. Also because some of the callback params
are 'in out' type a second routine called
Sage.StringToAddress was added to send string values back
from the callbacks to the dll. NOTE - All local strings
that are going to be receiving the value MUST be
declared to be a size equivalent to (1 .. param_High + 1)
in size or the Sage.AddressToString routine will throw a
SageError of SageErrs.ArrayTooSmall.
4) Entry Title: All string params in callback routines in Ada split into
Address and High components.
Area Affected: Ada
Status: Complete
Description: In order for the Ada side of SageST to make full use of
the dll, a new requirement is in effect that all string
parameters in callback routines cannot be of the base
type string. They will be split into two components. An
address value which represents the location of the first
character of the string and a High value which
represents the size of the string in a zero relative
system. That means that all local strings which need to
receive this value MUST be declared to be 'High + 1' in
size. i.e. in the callback for Files.DirQuery the
params are now FileName (an address) and FileName_High
(the high value, zero relative) and Continue. So a local
string that needs to hold this value (that is
accomplished by calling Sage.AddressToString) will need
to be declared as MyFileName : string (1 .. FileName_High
+ 1) := (others => Ascii.Nul); in order to be the
correct length.
Correction: Declare all local copies of the string value as (1 ..
Param_High + 1).
November 11, 2004
1) Entry Title: Sage.GetFieldI - Tightened checks and added error 18
Area Affected: Ada
Status: Complete
Description: Found that if a variable of type natural (or
ModSys.S_Natural or any variation) is used in
Sage.GetFieldI but the field contains a negative value
SageST was not catching that. Also apparently that is a
StonyBrook Ada bug because it assigns the value to the
variable (if you look at the natural variable in the
debugger it happily reports that the value is -999 or
whatever it was)
Correction: Added changes to ensure that the field is within the
range of the receiving variable. If it is not then
SageErrs.TypeConflict (18) is set. This is a fatal error
so will cause a popup message before returning from the
GetField call. The value returned will be 0. NOTE -
This is strictly a data driven check so it will not
always pop the error until it happens to hit a negative
value in the field.
November 08, 2004
1) Entry Title: Sage/Display - Moved the DefineFormIntercept routine.
Area Affected: M2, Delphi
Status: Complete
Description: Moved the DefineFormIntercept routine from the Sage
package to the Display package.
Correction: This is preparation for the Ada side moving to the dll.
2) Entry Title: Files.DirQuery - Changed the order of the parameters to
match the dll.
Area Affected: Ada
Status: Complete
Description: Changed the order of the parameters in the Files.DirQuery
routine to match the dll.
Correction: Switched the params to match the dll. This is
preparation for the Ada side moving to the dll.
3) Entry Title: Reports.WrDirect - Changed order of the parameters
Area Affected: Ada
Status: Complete
Description: The order of the params in the WrDirect routine does not
match the order the dll is expecting.
Correction: Switched the params to match the dll. This is
preparation for the Ada side moving to the dll.
October 07, 2004
1) Entry Title: GDIPrint - Font is not correct when doing ASCIIToGdl
conversion in landscape mode
Area Affected: Ada, M2
Status: Complete
Description: When using the ASCIIToGdl routine and sending a job that
is in landscape mode the output is using a font that
seems to be too large.
Correction: Found that a calculation for the font size was not taking
into account the use of landscape mode. Added code to
perform the correct calculation for that mode.
Version released at this point: 6.23.0013
October 04, 2004
1) Entry Title: STSecurity - Getting an access violation
Area Affected: Ada, M2
Status: Complete
Description: Getting an access violation when using the Checks Off
version of SageST in this routine. The error occurs in
the Policy editing routine.
Correction: Found where an uninitialized pointer was being used.
September 30, 2004
1) Entry Title: Strings.Insert - Found that a request to insert a character
past the null causes problems
Area Affected: Ada, M2
Status: Complete
Description: If a request to insert a character ends up being past the
first null character a range error is thrown.
Correction: Added code to check that the insert request is not beyond
the first null (which makes it an invalid position). If
detected the routine now simply returns with a success
value of false.
2) Entry Title: SageOpt - Getting a range error when processing data.
Area Affected: Ada, M2
Status: Complete
Description: Getting a range error thrown when processing data.
Correction: SageOpt.UnloadLine was processing a line looking for
delimiter characters when doing delimited format. When
found it called Strings.Insert to do some manipulation.
Found that the UnloadLine routine did not properly stop
when it hit the first null character in the string but
instead kept looking. This later caused an invalid
request for an insert to be sent to the Strings.Insert
routine. Added a check to watch for the null character
and to stop processing the line at that point.
Version released at this point: 6.23.0012
September 29, 2004
1) Entry Title: STSecurity - Some minor corrections concerning messages
Area Affected: Ada, M2
Status: Complete
Description: Some of the error messages are being displayed when it
appears that there really isn't an error.
Correction: Corrected to put messages up and appropriate times.
Version released at this point: 6.23.0011
September 15, 2004
1) Entry Title: STSecurity - Found that Administrator lockout of an account
was not working
Area Affected: Ada, M2
Status: Complete
Description: If an Administrator locks out an account it is being
overridden by the local account lockout time.
Correction: Corrected the problem by adding an additional flag to
catch that the account is administratively locked out.
September 08, 2004
1) Entry Title: Rebuild - Would like to not stop when a relation file
doesn't not exist
Area Affected: Rebuild
Status: Complete
Description: Would like to keep processing when a relation file does
not exist. That is not really a problem, the relation
just does not contain data yet so the user should not
have to acknowledge that fact on every rebuild.
Correction: Added a modification so that particular error is logged
but does not stop the process with a pop up message.
September 07, 2004
1) Entry Title: Thor - Getting an error 57 message when editting some DOS
forms
Area Affected: Thor
Status: Complete
Description: Getting an error 57 message when EDITING some DOS forms.
Correction: Found and corrected where a value that was too long was
being put into one of the internal Thor fields.
Version released at this point: 6.23.0010
August 30, 2004
1) Entry Title: Sage.ProcessRecords - Errors if relation files do not exist
and relation opened with modify equal false
Area Affected: Ada, M2
Status: Complete
Description: If a relation's files do not exist, the relation is
opened with Modify equals false and then ProcessRecords
is run on that relation it will throw a handle not opened
error.
Correction: Added code to detect this situation and return from
ProcessRecords correctly. No records will be processed
since none exist.
August 26, 2004
1) Entry Title: Ctrl-B Color toggle disabled in all of SageST
Area Affected: Ada, M2
Status: Complete
Description: If the Ctrl-B toggle is used when a form has been
dynamically changed then the form is reloaded and those
changes are lost.
Correction: The Ctrl-B toggle to change between color and black and
white screens was introduced a long time back when
monochrome screens were around. Changed the colors
sometimes made the forms more visible on those monochrome
screens. Since those are now a thing of the past the
toggle has been disabled as a simple way to also fix the
dynamically changed screens problem.
August 03, 2004
1) Entry Title: Thor - Concat fields cannot have the fields changed while
doing modify
Area Affected: Thor
Status: Complete
Description: Found that concat fields could not have the fields
changed while doing modify.
Correction: Added code to allow the Concatenation button to be active
if 1) the field is being modified, not added and 2) it
was of type 0 when the modify operation started. Also
added warning messages if you change the type to 0 that
you must also take the step of using the Concatenation
button or modify the field again to actually define which
fields will be used. The same is true if you add a new
field of type 0 you will see the warning.
Version released at this point: 6.23.0009
July 22, 2004
1) Entry Title: STSecurity - Added success parameter
Area Affected: Ada, M2
Status: Complete
Description: Need a success parameter to know if the file was saved.
Correction: Added the param to the appropriate routine. Also
corrected a couple of logic errors.
Version released at this point: 6.23.0008
July 19, 2004
1) Entry Title: Thor - Field names when modified so that order is affected
causes descriptions to disappear
Area Affected: Thor
Status: Complete
Description: If field names are modified so that the order of fields
is switched the description on one of the fields
disappears.
Correction: Found a logic problem where the description was being
chopped from the field. Corrected the logic to retain
the description also.
July 14, 2004
1) Entry Title: BinLib - Added a routine that takes a handle type
Area Affected: Ada, M2
Status: Complete
Description: Need a routine that takes a handle for the data instead
of a particular data type. This way the callback routine
will be able to process data of any type.
Correction: Added the new routine BinLib.BinaryLocateHandle which
takes as a parameter the address of something as a
handle. This allows for any type of array to be used in
the routine instead of the currently defined data types.
2) Entry Title: CtrlEdit - Need routines to set an Upper Case or Lower Case
style for the control
Area Affected: Ada, M2
Status: Complete
Description: Need routines to set the edit control's style to be an
Upper Case or Lower Case field. This would cause the
data to appear that way as it is entered by the user.
Correction: Added the new routines CtrlEdit.SetUpperCaseOnly and
CtrlEdit.SetLowerCaseOnly to allow the requested
functionality.
July 02, 2004
1) Entry Title: Configure - Special identifiers only accept seven
characters of identifier name
Area Affected: Configure
Status: Complete
Description: If a special identifier name of the maximum length is
entered only the first seven characters of the name are
recognized, the eight character is ignored.
Correction: An internal string needed to be one additional character
in length in order to contain an ending null character in
the string.
July 01, 2004
1) Entry Title: STSecurity - New routine added called UpdateSecureFile
Area Affected: Ada, M2
Status: Complete
Description: Need a way to at any time force the updating of the
security file.
Correction: Added a new routine called STSecurity.UpdateSecureFile.
June 30, 2004
1) Entry Title: SDI - Needs option to print on cardstock
Area Affected: SDI
Status: Complete
Description: Would like an option in SDI to print on cardstock size
media (8.5" x 7.5")
Correction: Added cardstock size as an option when defining the
output media.
2) Entry Title: GDIW - Would like to sort on any field and also do reverse
sorting of data
Area Affected: GDIW
Status: Complete
Description: There is a Next Field button to set the sort field but it
does not appear to work. Also would like the ability to
click on the header of a column and have it become the
sort field. Also if the sort field column is clicked a
second time would like to have it sort the data in
reverse order.
Correction: Corrected the Next Field button so that it does make the
next field the sort field (with the exception of block
data fields). Enabled a column header to be clicked
which makes that field become the sort field. If the
sort field column header is clicked after that it acts as
a toggle to shift the sort Ascending/Descending. If the
sort field is changed to another field the sort order
will default back to Ascending until changed.
3) Entry Title: Display.LastExitFunction returning incorrect value after
system has been closed.
Area Affected: Ada, M2
Status: Complete
Description: The function Display.LastExitFunction still returns a
value even after CloseSystem has been called. The value
should be reset to the default when the CloseSystem
happens.
Correction: Added code to reset the value to 0 when the system is
closed.
June 29, 2004
1) Entry Title: Sage X Routines - Need to be consistent in use of X handle
Area Affected: Ada, M2
Status: Complete
Description: The X routines of Sage (ReadRecordNX, GetFieldX) need to
consistently use the XHandle parameter. Currently
sometimes it is returned as a function value and
sometimes its passed as a parameter.
Correction: Modified so that all routines use the XHandle as a
parameter and are more like the original ReadRecord type
routines to use.
June 24, 2004
1) Entry Title: SageKey - Getting an array overrun error when using a
boolean field
Area Affected: Ada, M2
Status: Complete
Description: Found that if a boolean field is used it causes an array
overrun error.
Correction: Found and corrected code that did not handle the size of
the field correctly.
2) Entry Title: SageKey - Using a field of type Date causes the index to be
corrupted
Area Affected: Ada, M2
Status: Complete
Description: If a field of type Date is used then the index cannot be
accessed later.
Correction: Found a place where the use of a Date field causes
Sage.SageError to get set to error 44. Later the error
was still set and would not let the position of the
current entry to be returned. Simply resetting
Sage.SageError immediately after the point where it is
set solved the problem.
June 23, 2004
1) Entry Title: SDI - Repeat fields not correctly position in the output
Area Affected: SDI
Status: Complete
Description: Found that if repeat fields are used then starting with
field #2 the rest of the data is shifted one character to
the left, covering the last character of field #1.
Correction: Corrected a logic error when calculating the position in
the output line for repeat field data.
June 18, 2004
1) Entry Title: Field names using repeats can cause a 'Field not defined'
error
Area Affected: Ada, MS
Status: Complete
Description: Found that in some cases when using a field name with the
repeat value the error 'Field not defined' can be
generated. The combination that triggers this is when a
space is used between the end of the field name and the
field name is less than eight characters in length. For
example "PMOS [1]" would trigger the error.
Correction: Modified the internal routine that parses field names so
that it now correctly handles if a space is used in the
name.
Version released at this point: 6.23.0007
June 09, 2004
1) Entry Title: GDIView - Using SageTerm in combination with GDIView can
cause a lockup
Area Affected: Ada, M2
Status: Complete
Description: Normally if a SageTerm is up and then GDIView is called
and then you exit the viewer using the Exit button
everything is fine. However if you have allowed the
system menu to be on the viewer and they click the Close
button (upper right corner) then the viewer exists fine
but control is never returned to the SageTerm. So the
SageTerm just appears as a dead window even though the
Viewer is gone.
Correction: Added code to correctly handle the SysCommand message
coming from the button click. The code was in place for
the Exit button but code for this button had not been put
into place.
2) Entry Title: STSecurity - An endless loop can be encountered while
modifying a users groups
Area Affected: Ada, M2
Status: Complete
Description: While moving a users group assignments an endless loop
can be encountered.
Correction: Found and corrected a logic problem resulting in an
endless loop.
3) Entry Title: GDIPrint - An error can be encountered trying to get the
default printer name
Area Affected: Ada, M2
Status: Complete
Description: Found that an error can be encountered while trying to
get the default printer name.
Correction: The structure of the GDIHandle type needed to be altered
so that the device error could be set in the handle even
without having the handle open. This also required a
change to the NumPapersAvailable routine, changing it
from a function to a procedure.
Version released at this point: 6.23.0006
June 08, 2004
1) Entry Title: Thor - Copy of Forms can get a corrupted list of names
Area Affected: Thor
Status: Complete
Description: Found that when doing Form copies the names and
information about the forms could end up getting
corrupted.
Correction: Modified code that was not correctly reading the
information about the form from the file. This was a
logic error exactly like one found recently that when
doing the relation copy that would present the same
corrupted list of names.
June 03, 2004
1) Entry Title: Sage.CopyField - Sometimes did not catch that field sizes
were different
Area Affected: Ada, M2
Status: Complete
Description: Found that Sage.CopyField did not always catch when a
difference in the fields was going to cause the copy to
fail. The particular example that caught the problem
copied a field of Integer length 6 to a field of Integer
length 5. If the value was 100,000 or greater (used all
six digits) then when the copy completed the value in the
target field would be just the left five digits.
Correction: Internally the routine used two different methods in
order to accomplish the copy on the various field types.
Found that it needed to detect the condition described
above and simply use the other method in that case. When
that is done then a copy between the fields will succeed
up to the point where the value is too large for the
target field. When that happens a SageError is generated
showing that the maximum range of the target field has
been exceeded. The SageError is a Minor error and will
cause an error popup if allowed.
May 27, 2004
1) Entry Title: Thor - Getting array subscript error when cancel hit during
field modify
Area Affected: Thor
Status: Complete
Description: Add a new relation. Click on the new field entry. Click
modify. Click cancel to exit the modify process. An
array subscript error will be thrown.
Correction: Added a check that detects this condition and does not
access the array causing the error.
2) Entry Title: SageLib and MSageLib - Getting 113 errors when hitting
first and last records
Area Affected: Ada, M2
Status: Complete
Description: Getting the 113 error when the first and last records are
hit while doing Next and Previous operations.
Correction: Found that the internal code as doing .Next and .Previous
reads even when it did not have a record position
established. In addition found that the Previous error
was caused in both SageLib and MSageLib operations.
However the Next error only happened in MSageLib.
Version released at this point: 6.23.0005
May 25, 2004
1) Entry Title: STSecurity - The package WinSecureLib was renamed to
STSecurity
Area Affected: Ada, M2
Status: Complete
Description: The package currently called WinSecureLib may be needed
in X32 mode also. Rename it to get rid of the Win
designation.
Correction: The package was renamed to STSecurity. The package has
also had a number of corrections and additional
capability added since it was first introduced.
May 24, 2004
1) Entry Title: RTF - Added capability to define Left Page, Right Page and
First Page style headers and footers.
Area Affected: Ada, M2
Status: Not Looked At
Description: Need the capability to define Left Page, Right Page and
First Page style headers and footers.
Correction: Added an enumerated type to describe what type of header
or footer is desired. Added a parameter to the routines
DefineHeader, DefineFooter, SetHeaderTabs,
ClearHeaderTabs, SetFooterTabs and ClearFooterTabs. With
this extra parameter the different types of headers and
footers are now available to use.
2) Entry Title: DiskLib - Need a routine to handle formatting floppies
under Win32
Area Affected: Ada, M2
Status: Complete
Description: Would like a way of calling to have a floppy formatted.
Correction: Added the routine DiskLib.FormatFloppyDrive which when
called will perform a format of a floppy if one is
inserted. Note that this routine requires Windows 2000
or greater to run.
May 19, 2004
1) Entry Title: Strings.FormatNumberString - Returns bad value if all zeros
passed in
Area Affected: Ada, M2
Status: Complete
Description: If a string of all zeros is passed in it returns an
incorrect value.
Correction: Corrected to return a string containing a single zero.
May 18, 2004
1) Entry Title: FixLib - If not completed due to errors a file handle is
left open
Area Affected: Ada, M2
Status: Complete
Description: Under certain conditions an error may be encountered in
the process that causes it to exit. When that happens a
file handle is left open.
Correction: Added code to close the file handle when that error
occurs.
2) Entry Title: Thor - DOS toolbar buttons now on by default
Area Affected: Thor
Status: Complete
Description: Thor should default on the DOS toolbar buttons if there
are DOS objects in the schema. Then once the user has
turned off the option it should stay off.
Correction: Changed the default to turn on the DOS toolbar buttons if
DOS objects are present in the SRC. However once once
turned off by the user the buttons are no longer visible
unless turned back on by the user.
May 13, 2004
1) Entry Title: Logger - If a path used with the dfl then the log file is
not found
Area Affected: Logger
Status: Complete
Description: If a path is typed in with the dfl name then the log file
is not correctly located.
Correction: Added code to detect this combination and to corrrectly
use the path to the dfl file to locate the log file.
2) Entry Title: Reports - Header of report sometimes shows part of first
data line
Area Affected: M2
Status: Complete
Description: Found that in Modula-2 only if the first data line of a
report was longer than the header line then the part of
the first data line longer than the header was printed in
the header area following the header text.
Correction: Added code to correctly print only the header text.
3) Entry Title: Sage.DeleteRelation - An entry is not being put into the
log file for this operation
Area Affected: Ada, M2
Status: Complete
Description: When a Sage.DeleteRelation is performed an entry is not
put into the log file.
Correction: Added an enumeration type of RelationDelete and added an
entry that is written to the log file when the operation
is performed. If you are calling the routines from
LogLib in which you are called back and you are doing the
record manipulation yourself then you should add code to
handle the RelationDelete type being passed back to you.
In that case you would do a Sage.DeleteRelation and
then Sage.OpenRelation to prepare the database for
processing the rest of the file.
May 05, 2004
1) Entry Title: Additional 113 error detection added
Area Affected: Ada, M2
Status: Complete
Description: Additional detection of the 113 error situation has been
added.
Correction: Found that when a record was written or rewritten some
information was left in a record structure that should
not have been. Later when Sage.GetKeyPosition was called
would cause an erroneous index position to be returned
if using a keyed field that had not been used again for
positioning since the Write/Rewrite operation (it
reported the position of where it last was before the
record was written/rewritten). Now when GetKeyPosition
is used on that unused key field the 113 error is
detected and shown.
May 04, 2004
1) Entry Title: FindRecord routines - 113 error flag being set incorrectly
in FindRecord routines.
Area Affected: Ada, M2
Status: Complete
Description: After calling FindRecord the GetKeyPosition routine trips
the 113 error check.
Correction: Found that the internal flags that track the status and
detect the 113 error situation were being set incorrectly
when the FindRecord routines were called.
April 29, 2004
1) Entry Title: SageErr - Some errors upgraded from Other to Minor status
Area Affected: Ada, M2
Status: Complete
Description: Upgraded some SageErrors from being just OtherError
status to being MinorError status.
Correction: The affected SageErrors are ObjectNotAvailable (93),
DialogOrControlNotAvailable (94),
InvalidControlTypeFunction (95),
InvalidControlCommandFunction (96), InvalidObjectName
(97) and InvalidInstanceName (98). Prior to this with a
status of OtherError they would set Sage.SageError but
would not pop up messages. By upgrading those to status
of MinorError if Minor Error checking is turned on they
would create a pop up message. These errors are only
encountered only when working with Win32 and using the
Sage Dialogs and custom controls.
2) Entry Title: CtrlEdit - The routine GetValidateCharData should return
the entire string
Area Affected: Ada, M2
Status: Complete
Description: The routine CtrlEdit.GetValidateCharData should return
the entire current string contained in the control
instead of just the single character. We already know
the offset into the string where the character is at so
seeing the entire string would allow more flexibility in
doing validation.
Correction: The parameter called value in the routine
CtrlEdit.GetValidateCharData now returns the entire
string from the control. Also the string does contain
the character just pressed in the proper position. Using
the offset parameter the calling routine will know which
character was just pressed. Prior to this the calling
routine only received the single character in the
parameter.
3) Entry Title: STBackup - Need a routine to do simple backup of various
files
Area Affected: Ada, M2
Status: Complete
Description: Need a routine which will allow the simple backup of any
type of file.
Correction: Added the routine STBackup.BackupCustomFiles which allows
for doing the simple backup structure of creating a
backup directory and copying the file on any type of
file.
4) Entry Title: CtrlEdit - Need string size checking on the
GetValidateCharData and GetValidateValueData routines
Area Affected: Ada, M2
Status: Complete
Description: Need to check that the target string is large enough to
receive the value in the routines GetValidateCharData and
GetValidateValueData.
Correction: Added a check and SageError.ArrayTooSmall assignment if
the target string is not large enough to hold the value.
April 28, 2004
1) Entry Title: Edit control - User type edit control not calling back to
validation routines
Area Affected: Ada, M2
Status: Complete
Description: If a Sage Edit control is set to be a Sage linked field
then the validate char and validate value routines work
fine. However if a User type is selected then even
though validation can be set the validation message is
never returned.
Correction: Corrected some internal logic so that for either Sage or
User type links to a Sage Edit control the validate char
and validate value messages are returned. NOTE - It is
possible that previously you may have had a User link
defined and the validation checks where on but you just
never received the callback to do the validation. If you
have any Sage Edit controls like that this change will
cause you to start receiving the messages and it will
expect a return value. The validation check would not
have been on by default, the default is off, but if you
did change that at some point in the past it will now
call you.
April 27, 2004
1) Entry Title: Thor - Adding relations/fields and then editing objects
gets rid of relation/field changes
Area Affected: Thor
Status: Complete
Description: Found that doing any relation or field edits and then
editing an object would get rid of the relation or field
changes.
Correction: Added code to save the current src changes before
allowing object editing.
April 22, 2004
1) Entry Title: GDIPrint - Will detect and handle additional printer strings
Area Affected: Ada, M2
Status: Complete
Description: GdiPrint.ASCIIToGDL needs to handle some additional
printer strings.
Correction: Added code to handle the ASCII.esc and ASCII.si
combination (in addition to just the single ASCII.si) and
also to detect the printer init string of ASCII.esc and
'@'.
2) Entry Title: SDI - Need to search for dfl's when not found
Area Affected: SDI
Status: Complete
Description: Need to be able to search for the folder containing dfl's
if they are not found in the current directory.
Correction: Added a pop up dialog to browse for a folder if no dfl's
are detected in the current folder. This is active only
in the Win32 compile of SDI.
3) Entry Title: SDI - Not compressing print when lines are long in Win32
Area Affected: SDI
Status: Complete
Description: In the Win32 compile of SDI when report lines extend
beyond 80 characters the print is not changing to
compressed.
Correction: Found that the printer strings that control
initialization and compressed print were not being
written into the report in the Win32 compile of SDI.
Also found that one of the strings was not being handled
inside of the GDIPrint.ASCIIToGDL routine so updated that
also.
April 21, 2004
1) Entry Title: WinTools.BrowseForFolder - Need routine that allows
browsing/creating new folders
Area Affected: Ada, M2
Status: Complete
Description: Need a routine that not only puts up a dialog to select a
folder but will also allow creating folders.
Correction: Added a new routine called WinTools.BrowseForFolder.
This routine provides the full capability of Windows when
selecting a new folder including creating folders if
desired. Right clicking while a folder is highlighted
brings up a menu of operations allowed. By passing the
value of False to AllFunctions the user can be restricted
to simply selecting an existing folder. The other
difference besides creating folders between this routine
and a similar one in SageDialogs is that this routine
gives you the option of showing the files or if not, then
only the folders. NOTE - If files are showing they can
also be selected by the user. In that case the return
value will also contain the file name.
Version released at this point: 6.23.0004
April 20, 2004
1) Entry Title: Files.ConcatFiles - EOF characters getting embedded within
the final file
Area Affected: Ada, M2
Status: Complete
Description: When files are concatted together if the file which is
being added to ends in an EOF character it gets left
within the file. So the final file ends up with embedded
EOF characters.
Correction: Added code to check for this and to overwrite those
characters. The final file, if it has an EOF character,
will only have one and it will be at the end of the file.
2) Entry Title: Sdi.dfl file missing from install
Area Affected: Sdi
Status: Complete
Description: The Sdi.dfl file is not included in the SageST
installation.
Correction: Added the file to the install.
Version released at this point: 6.23.0003
April 14, 2004
1) Entry Title: Need a simple routine to provide data backup capability
Area Affected: Ada, M2
Status: Complete
Description: Need a routine that would provide some type of simple
capability to backup data files by making copies on the
hard drives.
Correction: Added a package called STBackup with a routine called
BackupDataFiles. This routine is very specific to
backing up the *.idx, *.dat and *.blk files that contain
SageST data. Along with those files it can also store a
copy of the .dfl file that is compatible with them. The
routine uses a registry entry to store a trigger point
(the number of times the routine is called before
performing the actual backup function) so this is
available in the Win32 library only. The routine will
create up to ten archive folders and copy the data into
them. Each time the backup is performed the data files
are rotated in the folders from folder number 1 up
through folder number 10 (or whatever max you tell the
routine). This routine currently does not copy any other
type of files and simply makes copies in folders on the
local machine. It does NOT do any type of backup to
other media. This was designed to be a simple mechanism
to have a copy of the files when needing to recover.
April 06, 2004
1) Entry Title: Convert - Need a routine to handle percentages
Area Affected: Ada, M2
Status: Complete
Description: Need a routine to handle what percentage a number is of
another number and also returning that in a string value.
This is often needed for reports in applications.
Correction: Added the routine CardToPercent in Modula 2 and
NatToPercent in Ada. This routine takes in two numbers,
calculates what percent one number is of the other and
returns the percentage in a number and in a nicely
formatted string (i.e. 1,234%).
March 04, 2004
1) Entry Title: GdiPrint - Need a routine to test for a default printer
Area Affected: Ada, M2
Status: Complete
Description: Need a routine to help with detecting if there is a
default printer for the machine.
Correction: Added the routine GdiPrint.GetDefaultPrinterDeviceName.
2) Entry Title: Thor - Should show form modification info on the form list
Area Affected: Thor
Status: Complete
Description: Thor should show the form modification information such
as date, time and user id of when a form was modified on
the same screen which has the list of forms in the SRC.
Correction: Added the mod date, mod time and the user id to the form
list screen.
March 03, 2004
1) Entry Title: Configure - Not all paths get updated when using the
Replicate function
Area Affected: Configure
Status: Complete
Description: When the Replicate button is used not all paths get
updated.
Correction: Found some internal counters that did not properly update
if relations that did not have a path no gained a path
from the Replicate function.
March 02, 2004
1) Entry Title: TimeLib - In Ada if the same string passed as both params
returns blank
Area Affected: Ada
Status: Complete
Description: Found that if the same string is used as both the in and
the return parameter to calls such as Date1ToDate0 it
returns a blank string.
Correction: Added code to protect against this condition and to
return correct values.
Version released at this point: 6.23.0002
February 26, 2004
1) Entry Title: Thor - Not showing relation list correctly when doing Copy
function
Area Affected: Thor
Status: Complete
Description: The list of relations available to copy is not being
shown correctly.
Correction: Found a error where it was looking at the target SRC
relation list instead of the source SRC list.
2) Entry Title: Rebuild/FixLib - Rebuilding a field with new repeats added
does not clear field properly
Area Affected: Ada, M2, Rebuild
Status: Complete
Description: When a field has repeats added to it the additional
repeat fields appear to not be cleared properly.
Correction: Found that the original problem exists only in the Ada
library so it happens only when doing a
FixLib.Restructure from within an Ada program. It
occured because of errant code that tried to copy the
contents of the old field over but didn't stop when it
hit the number of repeats of the old field (the M2
library did have the check to stop). By continuing
beyond the number of old repeats it copied junk from some
unknown area of memory to the new repeats of the field.
Besides the direct fix for that problem code was also
added in the Ada library, the M2 library and in Rebuild
to ensure that the new repeats of the field will
definately be initialized to nulls.
3) Entry Title: WinSecureLib - Added a new package to support user login
capability
Area Affected: Ada, M2
Status: Complete
Description: Need a new library to support a more standard and more
secure method of authenticating user logins.
Correction: Added a new package called WinSecureLib that provides
functions for defining users and groups. This package
utilizes DES (128 bit) encryption to store user
information, a much more secure method than storing data
in relations. This will provide a uniform method for any
application to handle their user logins without each
application reinventing the wheel.
February 24, 2004
1) Entry Title: Sage.FindRecord - Not setting 113 error flags correctly
Area Affected: Ada, M2
Status: Complete
Description: If Sage.FindRecord is called the 113 error check flags to
not get set correctly. Doing Sage.GetKeyPosition
following a Sage.FindRecord ends up triggering the error.
Correction: Added code to set the flags so that Sage.FindRecord does
establish position in the file.
2) Entry Title: GdiPrint.ViewLog - Needs callback routine to intercept
printing
Area Affected: Ada, M2
Status: Complete
Description: The routine GdiPrint.ViewLog puts up a viewer and while
there the user can click a print button to print the
document. That could be a callback routine at that point
to let the calling routine have some control over the
printing process.
Correction: Added a parameter to the call so that a callback routine
can be passed in. When the Print function is selected
this routine is called back and passed the necessary
parameters so that it could just call the
GdiPrint.PrintLog routine (the same method the viewer is
using) or it could do anything else that would be needed.
3) Entry Title: Sage - Error checking for 113 error temporarily disabled
Area Affected: Ada, M2
Status: Complete
Description: The tightening of the 113 error checking which typically
is used to catch errors in the use of Sage.Next and
Sage.Previous when reading records is disabled in this
release only in order to support a particular projects
software release.
Correction: The check will be re-enabled in the next release of
SageST.
February 03, 2004
1) Entry Title: Thor - Need to confirm creating SRC made from the command
line
Area Affected: Thor
Status: Complete
Description: Thor should confirm before creating a new SRC file just
because the name is sent in on the command line.
Correction: Added confirmation before creating a new SRC if it does
not exist and it came from the command line or from the
history list. This will stop the accidental creation of
files caused by a typo. Also found that Thor was not
cleaning up empty SRC files that are a header only.
These are typically created from this accidental typo of
a name which created a new file. Turned that check back
on, however the only down side could be if you create a
new file on purpose but exit before doing any other
defination it could delete the file.
January 30, 2004
1) Entry Title: Rebuild - Passworded relation stops .old from getting
relation list
Area Affected: Rebuild
Status: Complete
Description: When the .old file has been selected Rebuild tries to
build a list of the relations. If a password protected
relation is hit the list is stopped.
Correction: Added code to handle a password protected relation and
for it to proceed with gathering the rest of the list.
2) Entry Title: Thor - Getting warning messages on start
Area Affected: Thor
Status: Complete
Description: Getting warning message when Thor is started.
Correction: Changing from using the .ini file for Thor global setup
information to using the registry created an error.
Previously when requesting an entry from the .ini file
all that had to be checked was a success flag to know if
we got it. Now when the registry is queried you have to
check if success was true and if the entry is larger than
zero length. Added the zero length check to the
appropriate places.
Version released at this point: 6.23.0001
January 29, 2004
1) Entry Title: Thor - Can't get out of objects dialog
Area Affected: Thor
Status: Complete
Description: If the following conditions are met you end up in an
infinite loop 1) The .res and symbol files are read only
2) the 'Edit Properties' button is clicked 3) the Ok
button is clicked. This causes a message to pop up
showing that you cannot change the object however you end
up in an infinite loop with this message continually
popping up.
Correction: Added code to detect this condition and to exit after
showing the message one time.
January 28, 2004
1) Entry Title: Thor - Should move to using registry instead of .ini files.
Area Affected: Thor
Status: Complete
Description: Should move away from using .ini files and use the
registry for storing values.
Correction: This has been partially completed. The file Thor.ini is
converted to registry entries now instead of using the
file. This is the global Thor setup information. Local
SRC setup information is still stored in a local .ini
file for the .src.
January 21, 2004
1) Entry Title: Crypto - New package added
Area Affected: Ada, M2
Status: Complete
Description: A new package has been added to SageST.
Correction: Added the package called Crypto. This package allows
data to be encrypted or decrypted using various
techniques ranging from a very weak encryption (Ceaser)
to stronger (Vernam) to moderately strong (Vigenere) to
full 128 bit very strong encryption (Des).
January 20, 2004
1) Entry Title: ErrorLog - LogHexBytes does not work correctly
Area Affected: Ada, M2
Status: Complete
Description: The routine ErrorLog.LogHexBytes does not print out
correctly.
Correction: Corrected to put out information in the correct format.
2) Entry Title: SageST version changed
Area Affected: Ada, M2
Status: Complete
Description: The SageST version should be changed due to updating the
Modula-2 compiler.
Correction: Due to the Modula-2 compiler update to Version 4 build 28
the version of SageST is now changed to 6.23.
January 15, 2004
1) Entry Title: Sage.CompareFieldR - Does not work if integer subtypes
different
Area Affected: Ada, M2
Status: Complete
Description: If an integer type field is used for each but the subtype
of the field is different the comparison will fail.
Correction: The comparison is done using two different techniques
internally based on what type of field is being used.
Switched integer fields to the other type of comparison
and the subtype difference is no longer a factor.
January 12, 2004
1) Entry Title: GdiPrint - Double counting converted pages under some
conditions
Area Affected: Ada, M2
Status: Complete
Description: Sometimes when a text to GDL conversion is processing the
routine reports double the number of pages that it
should.
Correction: Found that if the number of lines just before the Form
Feed line was also the value you passed to the routine as
max lines it would double count. It processed the
number of lines you had specified for max, incremented
the page count, then upon reading the very next line
encountered a Form Feed character and so it incremented
the page count again. Added code to detect this and to
correctly increment the page count.
2) Entry Title: Thor - When generating second and third reports still shows
content of first report
Area Affected: Thor
Status: Complete
Description: When a second and third report is generated it still
shows the content of the first report when the view
button is pressed.
Correction: Found that an error in UpdLib.CompareFileTimes (listed in
a seperate bug report) was causing Thor to not convert
the current text file into GDL format and show it. It
just showed the existing .gdl file which was actually the
content of the first report.
3) Entry Title: DiskLib Backup/Restore not working
Area Affected: Ada, M2
Status: Complete
Description: DiskLib.Backup and DiskLib.Restore are not working
properly.
Correction: Found that a compiler optimization uncovered a logic bug
in the code. A parameter that should have been of type
'in out' was declared to be of type 'in'.
4) Entry Title: UpdLib.CompareFileTimes - Does not return correct value
Area Affected: M2
Status: Complete
Description: The routine UpdLib.CompareFileTimes does not return the
correct values.
Correction: Found a recent change to handle UNC type names had
introduced an error only in the M2 version so that it
would not function correctly.
December 18, 2003
1) Entry Title: Strings.FormatNumberString - Not returning formatted values
Area Affected: Ada
Status: Complete
Description: The routine Strings.FormatNumberString is not returning
values correctly.
Correction: Found that if the value passed in was longer than the
final string was supposed to be it had a problem that
resulted in the string being returned as null.
December 17, 2003
1) Entry Title: Rebuild - Needs some way to view and manage the log file
Area Affected: Rebuild
Status: Complete
Description: Rebuild should have a button to allow the user to view
the log file.
Correction: Added a button that will bring up the log file to view
and to print if the user desires. After viewing the user
is asked if they want to reset the log file by deleting
it.
December 10, 2003
1) Entry Title: MultSage.OpenRelation - Will not return SageError correctly
if an index problem in the relation
Area Affected: Ada, M2
Status: Complete
Description: If the relation has an index problem (i.e. missing index
file) the MultSage.OpenRelation will not detect that
condition. Instead of returning a SageError to indicate
the problem it returns a 0 (SageErrs.OpOk).
Correction: Added code to correctly return the correct SageError from
the routine when an index problem is detected.
2) Entry Title: Rebuild - Will not auto repair when only an index rebuild
is needed
Area Affected: Rebuild
Status: Complete
Description: If only an index rebuild is needed on a relation Rebuild
will not detect and perform the action when the Auto
Repair button is used.
Correction: Found an error inside of MultSage.OpenRelation that
caused the SageError to be reset in this case. So the
calling routine looked for SageError coming from the
MultSage.OpenRelation call and got a value of 0
(SageErrs.OpOk) back.
December 05, 2003
1) Entry Title: STRegistry - Type renamed to better relate to common
Windows terminology
Area Affected: Ada, M2
Status: Complete
Description: The type RegistryBaseType should be renamed to correspond
with the common Windows terminology.
Correction: The type RegistryBaseType was renamed to HiveType to
correspond with how that item is referred to in most
Windows documentation.
2) Entry Title: Sage.ReadRecord - Added check to not allow positional reads
if record not positioned.
Area Affected: Ada, M2
Status: Complete
Description: Need to add checking to warn when a Sage.ReadRecord uses
one of the operations Sage.Next, Sage.Previous,
Sage.NextEq or Sage.PreviousEq and there is not currently
a record located.
Correction: Added checking that will pop up SageError 113
(IndexNotPositioned) if a ReadRecord is attempted with
one of the listed operations and there is not currently a
record located. Operations such as ReWriteRecord,
WriteRecord or DeleteRecord leave the system in a state
such that the record pointer is NOT positioned.
Attempting to do one of the listed positional operations
at that point is a very unsafe practice. Added a check
and the popup of error 113 if this situation is detected.
After doing a WriteRecord, ReWriteRecord or
DeleteRecord you should always do a logical read
(Sage.Eq, Sage.First, Sage.Last, etc.) that does not
depend on a starting position in the records in order to
find a desired record. Situations where you may have
been doing this and you have thought that it was working
correctly is only because you have been lucky that you
were probably using a primary key. Doing this with an
Alternate key is almost sure to be not correctly
processing records.