Sentry Spelling Checker Engine
You are here: Home > Support > Sentry Spelling Checker Engine > Revision History
A 64-bit DLL (named ssce5564.dll) is now included with Sentry Windows SDK. The 64-bit DLL can be used in 64-bit applications on 64-bit versions of Windows.
The help file pointed at by the HelpFile property may now be an HTML (.chm) help file. Older WinHelp help files are also supported.
The LastSelectedLex property now defaults to the first lexicon listed in UserLexFiles.
If the MainLexFiles property is empty, the main lexicon language is changed to the language selected when the Options dialog box is closed. Previously, the main lexicon language changed only if the selection changed.
The Sentry DLLs are now digitally signed.
The Sentry source code now includes .vcproj project files that may be using for building the Sentry software using Visual Studio 2005 and later.
Bug fixes, all SDKs:
Words in a lexicon with SSCE_EXCLUDE_ACTION are now immediately rejected when they are encountered. Previously, under some circumstances, certain options may have resulted in the words being treated as correct.
A problem that caused misspelled words to sometimes go unreported, and for the suggestion list to contain misspelled words when SSCE_SUGGEST_TYPOGRAPHICAL_OPT was enabled, has been fixed.
SSCE_AUTO_CHANGE_RSLT is now returned correctly for words containing mixed digits in a lexicon with SSCE_AUTO_CHANGE_ACTION when SSCE_REPORT_MIXED_DIGITS_OPT is enabled.
A problem where a critical region would not be exited (which could result in deadlocks) when an error occurred in SSCE_CreateLex has been corrected.
A problem with upper- and lower-case conversion in certain ISO-8859 character sets has been corrected.
A problem where a word in a lexicon with AUTO_CHANGE_ACTION would not be corrected if the word and its replacement differed only in case has been corrected.
A buffer overrun no longer occurs if SSCE_Suggest is called for a misspelled word longer than SSCE_MAX_WORD_LEN (80) characters when SSCE_SUGGEST_PHONETIC_OPT is enabled.
SSCE_INVALID_WORD_ERR is now returned when an attempt is made to add a word longer than SSCE_MAX_WORD_LEN (80) characters to a lexicon via SSCE_AddToLex, or if a text lexicon file contains a word longer than SSCE_MAX_WORD_LEN characters opened by SSCE_OpenLex.
Improvements have been made to the quality of suggestions produced when SSCE_SUGGEST_PHONETIC_OPT is enabled.
A buffer overrun no longer occurs for very long lexicon file names when SSCE_BACKUP_LEX_OPT is enabled.
A problem where numeric HTML character entities (e.g., â) were not recognized as alphabetic characters has been corrected.
Bug fixes, Windows SDK:
Optional hyphens in TX Text Control no longer cause the text to be truncated when it is checked with SSCE_CheckCtrlDlg.
TX Text Control is now recognized from a window class name in the form TXnn, where nn >= 10.
A problem where SSCEVB_GetSelUserLexFile in sscevbnet.vb would always return an empty string has been corrected.
SSCE_CheckCtrlBackgroundClear now works in TX Text Control when the underline option is used to mark misspelled words.
Function SSCE_CountStringWords has been added to ssce.pas.
The original text is no longer inserted in the wrong place when the deletion of a doubled word in TX Text Control is undone.
When misspelled words were marked with a combination of effects (e.g., bold and underline) in background checking, the effect would sometimes be removed from text with one (but not all) of the effects (e.g., bold) when the spelling status of a word was re-evaluated. This problem has been corrected.
A problem where a marked, misspelled word corrected by backspacing was not unmarked in TX Text Control during background checking has been corrected.
Words are now highlighted and replaced correctly when SSCE_CheckCtrlDlg is used to check only the selected text in TX Text Control.
Marked words are no longer unmarked incorrectly in TX Text Control when the first character is deleted.
Words are now highlighted and replaced correctly in the context area after the Change button is pressed in the Spelling Checker dialog box displayed by SSCE_CheckBlockDlg and not enough space is available in the block to hold the replacement word.
SSCE_CheckCtrlBackgroundClear will now correctly unmark the first word if the first word is a misspelled hyphenated term.
SSCEVB_GetStatistics in sscevbnet.vb now correctly returns values. Previously, it returned 0s.
An error code is now returned by SSCE_CheckCtrlDlg and SSCE_CheckBlockDlg when an invalid parent window handle (HWND) is passed. Previously, the spelling dialog simply failed to appear.
Auto-replacements made during background checking no longer result in partial words being incorrectly marked.
Recursive auto-replacements made during background checking (e.g., where x is replaced with y, and y is replaced with z) are now replaced correctly.
A problem where an assertion failure would sometimes result in PerformanceTestDlg.cpp in the MFC Example has been corrected.
Bug fixes, Source SDK:
Warnings resulting when lex2c.c was compiled with the highest warning level have been addressed.
An error is now returned if an attempt is made to open a single-byte compressed lexicon with a character set other than ISO-8859-1 in the Unicode spelling engine. (For this to work, the single-byte lexicon must have been compressed with Sentry version 5.17 or later.)
Suggestions returned by the Unicode spelling engine when SSCE_SUGGEST_TYPOGRAPHICAL_OPT is enabled have been improved.
Errors detected during lexicon compression in the Unicode spelling engine no longer result in a memory leak.
New options have been added to treat ampersands (&) and forward slashes (/) as part of the word when they are surrounded by alphanumeric characters. This affects SSCE_CheckString, SSCE_CheckBlock, SSCE_CheckCtlrDlg, and SSCE_CheckBlockDlg.
A character set parameter has been added to the SqLex command line.
Some minor improvements to suggestions for words containing transposed letters have been made.
SqLex now displays descriptive strings rather than error codes when an error occurs during compression.
Support for interactive and background checking of TX Text Control (version 10 and later) has been added.
A C# example and C# class for the Sentry API has been added.
Lower-level functions to support background checking (SSCE_CheckCtrlBackgroundMenu, SSCE_CheckCtrlBackgroundNotify, SSCE_CheckCtrlBackgroundRecheckAll) have been added. These functions rely on the calling application to detect events (change and caret change) events related to background checking. The new approach is more reliable and more likely to work reliably with future text controls. Also, SSCE_CheckCtrlBackgroundNotify can be used to detect if a misspelled word was typed in a standard edit control or text box; previously, background checking worked only with rich-edit controls.
A function to unmark all words marked as misspelled during background checking (SSCE_CheckCtrlBackgroundClear) has been added.
The file name of the Sentry Windows DLL has been changed to ssce5532.dll.
The Sentry license key is now provided as a signed, decimal integer. It is no longer necessary (or correct) to treat the key as a hexadecimal number. SSCE_SetKey now expects a signed 32-bit value as a parameter.
The Main Dictionary Language list in the Options dialog box now contains separate entries for pre- and post-reform German.
The strikethough (also known as strikeout) text effect can now be used to mark misspelled words during background checking.
Support for background checking rich-edit controls with class RichEdit50W has been added.
Bug fixes, all SDKs:
Duplicate suggestions are no longer generated when case sensitivity is disabled.
A problem where some suggestions would be incorrectly recognized as duplicate and therefore deleted has been corrected.
When SSCE_SPLIT_WORDS_OPT is enabled, the second (and subsequent) words may now be capitalized.
A problem that caused entries in text lexicons to be truncated at 79 characters instead of 80 characters has been corrected.
A problem where an attempt to auto-correct a word with incorrect case would result in the word being unchanged has been corrected.
A problem where an out-of-sequence word in some cases caused an unusable lexicon to be created during lexicon compression has been corrected.
A problem with automatic replacement of words containing possessives ('s) has been corrected.
A problem where the previous contents of a lexicon were not cleared when SSCE_SyncLex was called has been corrected.
A problem where invalid suggestions would be generated when SSCE_SPLIT_WORDS_OPT was enabled has been corrected.
When an error is encountered with a word during lexicon compression, the word's line number is now reported correctly.
SSCE_MIXED_DIGITS_WORD_RSLT is now returned only if the word contains a mixture of alphabetic and numeric characters. Previously, it was returned for words that consisted entirely of numeric characters.
Bug fixes, Windows SDK:
A problem that occurred during background checking where a series of periods in text could not be selected using shift and an arrow key has been corrected.
A problem where a spurious underline would appear when a space was inserted in a misspelled word during background checking has been corrected.
A crash no longer occurs when multiple lines of text are pasted into a .NET rich-text control during background checking.
Various minor problems with background checking have been corrected.
Attempting to background-check a rich-edit control with class RichEdit20W no longer causes a crash.
A problem where passing a NULL window handle to turn off background checking in SSCE_CheckCtrlBackground would cause a crash or other unexpected behavior has been corrected.
A problem where text pasted into a text control immediately after SSCE_CheckCtrlBackground was called was not checked for spelling errors has been corrected.
The amount of "flashing" caused by text selection during background checking has been reduced somewhat.
If no file name is entered in the New Dictionary dialog box, a dictionary file named ".tlx" is no longer created.
A problem where "not found" errors would be incorrectly displayed when the Test button was pressed in the Configuration dialog box in the Sentry MFC Example (Sentry Example Program) has been corrected.
A problem with hyphenated words in the "Custom dialog box" demos has been corrected.
Declarations for SSCEVB_xxxDlgTmplt functions have been added to sscevb.bas.
A problem where class names for TX Text Control classes could not be mapped in the INI file or registry has been corrected.
Bug fixes, Source SDK:
WS_WordComparator_Typographical no longer reads beyond the bounds of the word passed to it. This caused no problem in practice, but did cause warnings to appear in instrumentation software.
A problem where the Unicode BOM character would appear as part of the first word read in Unicode text-format lexicons has been corrected.
A problem where an assertion error would be raised when a compressed lexicon containing no suffixes was read has been corrected.
WordComparator_Wildcard and WordComparator_WildcardNC now return correct values.
The CHAR_TO_BASE macro now correctly returns the original character if no unaccented equivalent character exists.
The Sentry engine now supports all ISO-8859 character sets. Two new functions, SSCE_GetCharSet and SSCE_SetCharSet have been defined for this purpose. The default character set is ISO-8859-1, which was the only ISO-8859 character set supported previously. The character set is a "global" setting, meaning a change to the character set affects all sessions. A set of language-id constants for each major language covered by ISO-8859 character sets has been defined.
A backup copy of updated text lexicons is now made if SSCE_BACKUP_LEX_OPT is enabled. The backup is written to a file of the same name as the lexicon file with a ".bak" extension.
Text lexicon files are now updated in place. Previously, the updated lexicon contents were written to a temporary file, which was then renamed or copied to the original file name. Any permissions or other operating-system dependent attributes assigned externally to the lexicon file were therefore lost. The new approach prevents loss of permissions.
During lexicon compression, word list files are now sorted automatically by SSCE_CompressLexFile. Previously, it was necessary to sort word list files externally before compressing them. This change affects lexicons compressed using the Sentry API or using SqLex.
URLs, e-mail addresses, and numeric IP addresses are now also ignored when SSCE_IGNORE_DOMAIN_NAMES_OPT is enabled.
The criteria for determining if a string contains a domain name are now more restrictive.
HTML character entities which translate to alphabetic characters (e.g., ø) are now treated as part of the word in which they appear when SSCE_IGNORE_HTML_MARKUPS_OPT is enabled and are translated accordingly.
The typographical suggestion algorithm now has better handling for words misspelled by doubling letters or failing to double letters when required.
If the memBudget parameter passed to SSCE_OpenLex is negative, the entire lexicon is loaded into memory at the time the lexicon is opened (normally, parts of the lexicon are loaded as needed when spelling is checked and suggestions are obtained). This approach improves spell-checking performance and throughput (at the expense of slightly longer initialization), and may be particularly beneficial when lexicons are accessed across a network.
SSCE_AddToLex now returns -13 (SSCE_UNSUPPORTED_ACTION_ERR) if the lexicon is "external" (not created by the Sentry engine) and the action code passed as a parameter is anything other than SSCE_IGNORE_ACTION. Previously, the word would be added and the action and other word would simply be dropped. If the word was added as an auto-correction entry, this could potentially result in a misspelled word being added to the external lexicon (since the auto-correction entry was likely intended to correct a misspelling).
SSCE_CloseSession now frees memory used to hold session information when the last session is closed. This prevents spurious memory-leak reports in instrumented software.
The SqLex program now includes an option to generate a suffix file which can be used when re-compressing the same or similar word list subsequently.
The Sentry programmer's guide is now distributed as a single PDF file to facilitate searching.
A new function, SSCE_SyncLex, has been added to the Sentry API. This function re-loads the contents of an open text lexicon if the lexicon's associated disk file was changed since the lexicon was last loaded. This supports updates to shared lexicons made by other applications or users.
A new lexicon (tech.tlx) containing technical and Internet-related terms is now included. This lexicon can be open along with other lexicons to skip words such as "firewall" and "spammer."
When SSCE_IGNORE_HTML_MARKUPS_OPT is enabled, suggestions and replacement words no longer contain embedded HTML character entities in place of non-ASCII characters. Previously, if a suggested word contained a non-ASCII character (as in døg) a character entity was inserted in its place (as in døg) (but only if SSCE_HTML_MARKUPS_OPT was enabled). Applications which require character entities in place of non-ASCII characters can perform the substitution.
The text in the context menu which appears when the mouse is right-clicked over a control monitored by SSCE_CheckCtrlBackground is now obtained from the string table so it can be localized.
The text effects and text color used by SSCE_CheckCtrlBackground to mark misspelled words can now be specified by the calling application. Misspelled words can be marked by setting any one or more of the following attributes: text color, bold, underline, italics.
The SSCE_CheckBackground function will now, under control of the application, optionally not display a context menu when the mouse is right-clicked over the control. This allows the calling application to take responsibility for the contents of the context menu to insert application-specific items.
An option can be passed to SSCE_CheckCtrlBackground which causes it to check any existing text in a rich-edit control and mark any misspelled words. This is useful in situations where the control's contents are loaded from an external source, such as a disk file.
The MFC example now includes a dictionary configuration page which displays the values of the MainLexFiles, MainLexPath, UserLexFiles, and UserLexPath properties. In addition, the existence of each dictionary file can be tested to help diagnose configuration problems.
The "Options" and "Dictionaries" buttons in the built-in spelling dialog box can now be hidden using property settings.
The DictionariesButtonVisible, MemBudget, OptionsButtonVisible, and ReportUncappedWord properties were defined.
The set of potential languages which may appear in the Main Dictionary Language list in the options dialog box has been expanded to included all major languages covered by the ISO-8859 character sets. Customers who create dictionaries for languages not offered by Wintertree Software can place their dictionaries in the MainLexPath folder so the dictionary's language will appear in the list. Also, the ISO-8859 character set associated with a language is now set when the language is selected.
When attempting to determine the type of text control passed to SSCE_CheckCtrlDlg or SSCE_CheckBackground, the Sentry engine will now search for certain sub-strings in the control's window class name. For example, if the window class name contains the sub-string "RichEdit20A", the control is assumed to be based on RichEdit 2.0. If the control type cannot be determined in this fashion, a mapping entry is sought in the system registry or INI file as described in the programmer's guide under "Checking third-party controls."
A VB.NET example is now included.
The SqLex program is now distributed as a console-mode application to permit word-list files to be specified using wildcard patterns.
SSCE_SetIniFile and SSCE_SetRegTreeName now return values indicating if the specified INI file or registry tree exist.
Function SSCE_GetIniFile has been added. This function returns the name of the INI file currently being used by the Sentry DLL, or an empty string if the system registry is being used. Also, SSCE_GetRegTreeName now returns an empty string if the Sentry DLL is using an INI file.
The Validate program now checks the definitions of types such as SSCE_U8 and SSCE_S32 for correctness. This immediately highlights certain hard-to-detect build errors.
In the Unicode spelling engine, if the first character of a text lexicon contains a Unicode byte-order mark (BOM), the indicated byte ordering is used to read the lexicon and the BOM is skipped. Also, if a text lexicon read by the Unicode spelling engine appears to contain single-byte characters, the characters are converted to Unicode during reading. Text lexicons written by the Unicode spelling engine always contain Unicode characters in big-endian byte order.
In the Unicode spelling engine, characters with numeric values less than 0x00ff are now converted to single-byte characters and classified using the ISO-8859-1 character set tables. This dramatically improves performance when working with single-byte lexicons such as ssceam2.clx.
Source files for 25000, 50000, and 100000 word Canadian English lexicons are now included (ca25kc.c, ca50kc.c, ca100kc.c, cat.c).
Bug fixes, all SDKs:
When a word ended in a period, and the period was followed by a single quote (e.g., dog.'), the word would be checked with the period intact, resulting in a spurious spelling error. This problem has been corrected.
The correct cursor value is now returned by SSCE_DelStringWord.
Various problems with case patterns in replacement words have been corrected.
A problem where SSCE_GetLex would fail to copy the lexicon contents if the size of the lexicon was greater than 64K has been corrected.
A memory leak which occurred when an existing word was added again to a text lexicon has been fixed.
Words added to text lexicons are now checked for validity before being added. This prevents problems where strings containing control characters would corrupt a text lexicon.
SSCE_SetBlockCursor now allows the cursor to be positioned at the character following the last text character in the block.
The time required to load large, sorted text lexicons has been reduced.
Checking performance when SSCE_SPLIT_WORDS_OPT is enabled has been improved.
The German ß character is now correctly treated as lower-case.
Duplicate suggestions no longer appear in the suggestions list returned by SSCE_Suggest.
Characters such as "@" and ":" are now treated as word separators when SSCE_IGNORE_DOMAIN_NAMES_OPT is enabled, unless they appear in a string that appears to be a URL or e-mail address. Hyphens and underscores are treated the same way as alphabetic characters in domain names.
Ampersands in URLs are no longer treated as HTML character entities when SSCE_IGNORE_HTML_MARKUPS_OPT is enabled. Also, a newline character encountered in an HTML character entity is treated as the end of the character entity.
A crash that sometimes resulted when a corrupted compressed lexicon file was opened has been corrected.
When a mixed-case word was detected and SSCE_REPORT_MIXED_CASE_WORD_OPT was enabled, the otherWord parameter passed to an SSCE_Check* function is supposed to contain the word in a normalized case form. This was not happening, but the problem has now been corrected. Also, when a word containing mixed digits is detected and SSCE_REPORT_MIXED_DIGITS_WORD_OPT is enabled, the otherWord parameter now contains the checked word with a space inserted between letters and digits.
Long words no longer cause looping when SSCE_IGNORE_HTML_MARKUPS_OPT is enabled.
A problem with the formatting of the "#LID" header line in text lexicons has been corrected.
Possessive initialisms (e.g., D.A.'s) are now parsed correctly.
Bug fixes, Windows SDK:
A problem where the MFC example program would sometimes crash when the Check Background button was pressed has been corrected.
A problem where the "Performance" demo in the MFC example program would not show the full contents of alice.rtf when run under Win2K, XP, or NT has been corrected.
The "Add" item in the SSCE_CheckCtrlBackground context menu is no longer displayed if there is no user dictionary to add words to. Also, a problem where the misspelled word would not be added to the user dictionary has been corrected.
Problems where SSCE_CheckCtrlBackground would hang or crash when certain text was typed in the monitored control have been corrected.
The modification state of a control monitored by SSCE_CheckCtrlBackground is no longer changed simply by moving the cursor in the control.
A problem where SSCE_CheckCtrlBackground would not unmark part of a marked word if the word was corrected using the backspace key has been resolved.
The SSCE_CheckCtrlBackground function no longer displays a busy cursor when checking spelling. This reduces cursor flickering.
The control's parent now receives WM_NOTIFY messages when the control is monitored by SSCE_CheckCtrlBackground. This prevents problems when the monitored control is in a dialog box shared by TreeView controls.
Words followed by ellipses (...) are no longer unnecessarily marked misspelled by SSCE_CheckCtrlBackground.
A problem where SSCE_SetIniFile would use ssce.ini regardless of the name passed as a parameter, if the file name contained a relative rather than absolute path, has been corrected.
The ssce.h file no longer uses the TCHAR data type, which caused problems when the file was included in a Unicode application.
The LastSelectedLex property is now set to an empty string if all user dictionaries are removed.
The built-in spelling dialog box now does a better job of positioning itself to avoid the text being checked. Also, the dialog is not moved if it already avoids the text.
Change All now operates correctly when part of a hyphenated term is reported as misspelled.
A problem with the tab order of controls in the built-in spelling dialog box has been corrected.
Accents in words imported by the built-in dictionaries dialog box are no longer stripped off.
A problem where the custom dialog box in the Delphi example would crash if no misspelled words were found has been corrected.
SSCE_CheckCtrlDlg now leaves the control's cursor where it was when the function was called.
The Ignore All button in the built-in spelling dialog box is now enabled only if the reported word is misspelled. Previously, it was enabled for all problems except doubled words. If a word was correctly spelled (i.e., was contained in a lexicon) but was reported for containing mixed case or embedded digits, the Ignore All button appeared to be ineffective. The Ignore All button adds the word to a temporary lexicon, which prevents it from being reported as misspelled again, but does not prevent the word from being reported for containing mixed case or embedded digits.
A problem where the "N" shortcut key was used twice in the built-in options dialog box has been resolved.
The heap is no longer corrupted when all user dictionaries are removed using the built-in dictionaries dialog box.
Labels in the built-in dialog boxes are now visible when the system color scheme is set to high-contrast black.
The built-in options dialog box now modifies the MainLexFiles property only if the user selects a new main dictionary language. Previously, MainLexFiles was modified whenever the user clicked the OK button.
The Main Dictionary Language list in the built-in options dialog box is now sorted. Previously, the list itself was unsorted but entries were added in sorted order. However, the sort order was correct only if the entries were in English. When the language names appearing in list items were localized, the entries were not sorted resulting in user confusion.
A problem with the .dsp file for the DlgDemo example has been corrected.
The DlgDemo example program now prompts for a license key if necessary.
The CheckBlockDlg function in SentryASC is now implemented.
The SentryASC DLL is now built with "Retained in memory" and "Unattended execution" options.
Paths using UNC syntax passed to SSCE_SetIniFile are now treated as absolute paths.
Bug fixes, Source SDK:
Compressed lexicons containing suffix tables larger than 64K can now be opened. Large suffix tables are possible when a Unicode lexicon is compressed.
SqLex now frees allocated memory before it exits.
When lex2c is built with SSCE_UNICODE defined, and is used to convert a text lexicon, the resulting C data structure now contains valid Unicode character data.
MCLex lexicons can now be used with Unicode data structures created by lex2c.
The Validate program contained some non-ASCII character constants which caused problems with some compilers. The required characters are now generated at run time.
The "vector.c" source file has been renamed "wsvector.c", and the VECTOR data type has been renamed to WS_VECTOR, to avoid conflicts with the STL vector class.
The end-of-line character sequence is now defined as a constant string, rather than a macro. This makes it easier to define a portable Unicode sequence.
The temporary suffix file created by SqLex built to support Unicode now contains Unicode characters, rather than single-byte characters.
The SSCE_IGNORE_HTML_MARKUPS_OPT option was added. This option causes the Sentry engine to skip over text in HTML markups (e.g., <B>). The option is reflected in the Sentry Windows DLL as the IgnoreHTMLMarkups property.
The SSCE_CHECK_SINGLE_WORD_OPT option was added. This option is intended to be used in the "stateless" API (available with the Sentry Source SDK only) to cause WS_CheckText to treat the text as a single word, rather than as a series of words.
When the SSCE_IGNORE_NON_ALPHA_WORDS_OPT option is set, the same numbers appearing twice in a row will no longer be reported as a doubled word.
The SSCE_CheckCtrlBackground function was added to the Sentry Windows API. This function monitors typing made in standard rich-edit controls (CRichEditCtrl, TRichEdit, RichTextBox) for spelling errors, and marks misspelled words by changing their color to red. Example programs that implemented this feature in previous versions have been replaced with examples that use SSCE_CheckCtrlBackground.
Several functions that support checking and editing of strings have been added to the Sentry Core API. These functions will eventually replace the block-related functions.
A new lexicon type, MFCLex, has been added to the "stateless" API (available with the Sentry Source SDK). MFCLex lexicons are memory-based compressed lexicons that are loaded from clx files when the lexicon is opened. The entire contents of the clx file is loaded into memory, so once opened, MFCLex lexicons can be treated as read-only, meaning they can be safely shared by threads without need for synchronization.
New example applications written in C++/MFC, Visual Basic, and Delphi are included with the Sentry Windows SDK. The new examples demonstrate how to use the Sentry engine to perform various common spelling-checker tasks.
The Sentry Programmer's Guide has been reformatted as a set of HTML pages. The programmer's guide was reformatted so customers who receive the Sentry SDK electronically can easily print their own documentation.
The Active Server Pages example program included with the Sentry Windows SDK has been modified to improve its robustness.
The C code generated by the Lex2C utility program (included with the Sentry Source SDK) caused run-time problems on some systems. The code has been corrected.
A problem where misspelled sub-words in a compound word would not be reported if the first sub-word was misspelled and ignored has been corrected.
A problem where sub-words consisting entirely of digits would not be ignored when the SSCE_IGNORE_NON_ALPHA_WORDS_OPT option was set has been corrected.
A problem where the block cursor would be positioned incorrectly by SSCE_DelBlockWord has been corrected.
A problem where the "Get" functions in the Sentry Windows API (e.g., SSCE_GetMainLexFiles) would return garbage if they were the first functions called has been corrected.
A problem where SSCE_CheckWord would break the text at word separators and check each word individually, rather than checking the text as a single word, has been corrected.
A problem where the Sentry engine would take a long time to check text (and may appear to be hung) when the SSCE_ALLOW_ACCENTED_CAPS_OPT option was disabled has been corrected.
A problem where SSCE_InsertBlockText and SSCE_ReplaceBlockWord would return large negative numbers when making changes to blocks containing more than 32K of text has been corrected.
A problem with the suggestions produced for plural possessives (e.g., girls') has been corrected.
A problem with the Sentry DLL where a new language selection that was made through the Options dialog while a spelling check was in progress has been corrected.
A problem where the case pattern of the first replacement was different that the case pattern of subsequent replacements in a "change all" operation has been corrected.
A problem where the spelling dialog in the Sentry DLL would move after being initially displayed, even after SSCE_SetDialogOrigin had been called, has been corrected.
Synchronization problems that occurred when the Sentry DLL was called by many threads simultaneously has been corrected.
Various compilation warnings raised when the Sentry source code was compiled with the gcc compiler have been corrected.
Functional makefiles are now included with the Sentry Source SDK.
A problem where the SSCEVB_GetLex function always returned a lexicon of size 1 has been corrected.
Support for Active Server Pages (ASP) has been added to the SSCE Windows SDK.
If the SSCE_SetIniFile function is called in the 32-bit SSCE DLL, the DLL will now read and write property values to the specified INI file rather than the system registry. By default, the 32-bit SSCE DLL will use the system registry. Calling SSCE_SetIniFile will cause the DLL to use the INI file until SSCE_SetRegTreeName is called or the DLL is unloaded. The 16-bit SSCE DLL will always use an INI file.
If the registry tree name passed in the SSCE_SetRegTreeName function starts with "HKEY_LOCAL_MACHINE", the 32-bit SSCE DLL will read and write properties in the HKEY_LOCAL_MACHINE tree rather than HKEY_CURRENT_USER.
The StripPossessives property has been added to the Windows DLLs. This property corresponds with the SSCE_STRIP_POSSESSIVES_OPT option.
The word-parsing algorithm was modified to accept trailing periods only in words that contain embedded periods and no more than two consecutive alpha-numerics. The algorithm will accept trailing periods in words like "U.S.A." and "Ph.D." but not in "wintertreesoftware.com."
The behavior of the SSCE_SPLIT_WORDS_OPT option (and the SplitWords property) was changed to accept only words formed from sub-words containing two or more letters.
The real-time or "as you type" spelling check demos now honor the Auto Correct property setting. If this property is disabled, words marked for automatic replacement will be treated as conditional replacements.
A problem where the C Validate program and C "Speller" example would not compile under VC++ has been corrected. The ssce.h include file would include windows.h if _WIN16 or _WIN32 was defined. The validate.c and speller.c source files use strict ANSI C, and compiler warnings would result if windows.h was included (windows.h is not ANSI C compliant). However, Microsoft's implementation of ANSI C include files, such as stdlib.h, would issue warnings if _WIN32 was not defined. The solution was to define a new preprocessor symbol, SSCE_NO_WINDOWS, when compiling an ANSI C source file using VC++. The presence of this symbol prevents ssce.h from including windows.h.
The Validate program (included with the SSCE Source SDK only) will now verify the ability to access compressed lexicon files.
A problem where a GPF would occur when importing words into a text lexicon using the Dictionary dialog in the SSCE DLL has been corrected.
A problem where duplicate words would sometimes be added to text lexicons has been corrected.
A problem where a crash would sometimes occur when the "selectedOnly" parameter in SSCE_CheckCtrlDlg was true has been corrected.
A problem where SSCE_GetBlockInfo would report an incorrect cursor position when the first word contained leading puntuation has been corrected.
The 32-bit DlgDemo program (DlgDemo32) will now accept "curly" apostrophes (character code 146) as part of a typed word. Previously, these apostrophes were treated as word separators. The same problem was also corrected in the MFC demo.
A problem where the SSCEVB_GetBlock function in sscevb.bas would always result in an empty string has been corrected.
A problem where actions and other words would not be saved when a text lexicon was created, closed, then re-opened has been corrected.
The lexBfrSz parameter has been removed from SSCEVB_GetLex in sscevb.bas. Note that this does NOT apply to SSCE_GetLex.
The limit on the number of open sessions, the number of open lexicons per session, and the number of open blocks per session, has been removed. The number of sessions, blocks, and lexicons that can be opened is now limited only by available memory.
A new API, called the "Stateless API," is now available with the SSCE Source SDK. The Stateless API is thread safe without the need for synchronization mechanisms (e.g., semaphores).
The SSCE Source SDK now supports memory-based text and compressed lexicons. Memory-based lexicons are implemented as C data structures which are initialized at compile time and linked directly to SSCE. Memory-based compressed lexicons are fully thread safe, and memory-based text lexicons are thread safe if they are not modified. Memory based lexicons can be used in embedded systems and in highly concurrent applications such as servers. American and British compressed lexicons in 25,000, 50,000, and 100,000 word sizes are included with the Source SDK. A utility program which converts compressed (.clx) and text (.tlx) lexicon files to memory-based lexicons is also included.
The SqLex and WinSqLex programs will now determine an optimal set of suffixes to use from the word list files if no suffix file is specified.
File I/O performance in the Windows DLLs has been improved.
A problem where the "as you type" spelling checker example programs incorrectly truncated contracted words (e.g., "isn't") has been corrected.
A problem where characters typed before a misspelled word were inserted with the wrong text color in the "as you type" example programs has been corrected.
A problem where extra characters were sometimes inserted when a word was auto-corrected in the "as you type" example programs has been fixed.
A problem where a program or system crash would occur when checking RichEdit20A controls containing large amounts of text has been corrected. The problem appears to be a bug in the RichEdit20A control; a temporary work-around has been applied to avoid the bug until the problem is resolved.
The phonetic suggestion algorithm was modified to work better with words which contain several misspellings.
Suggestions for misspelled plural possessives (e.g., girls') are now handled correctly.
The Options dialog now contains a Main Dictionary Language list. The list contains languages for which dictionaries have been installed in the directory indicated by the current MainLexPath setting. When the user selects a language, the MainLexFiles property is automatically updated. See the "SSCE Properties" section of the "Using the SSCE Windows SDK" chapter of the SSCE Programmer's Guide for more information.
The origin (position) of the Spelling dialog is now saved in the SSCE.INI file or system registry in the DialogOriginX and DialogOriginY properties when the dialog closes. In addition, these properties are read to set the dialog at the specified position when the dialog is displayed if the SetDialogOrigin property has a value of 1. If the SetDialogOrigin property has a value of 0, the dialog will be positioned automatically.
A new option, SSCE_ALLOW_ACCENTED_CAPS_OPT, was added to support checking French Canadian text with Wintertree Software's French dictionary. This option is enabled by default and should be left enabled unless checking French Canadian text. The option is represented as the AllowAccentedCaps property in the SSCE Windows SDK.
The 32-bit SSCE DLL now reads and writes all properties in the HKEY_CURRENT_USER registry tree. If a property is not found in the HKEY_CURRENT_USER tree, it is looked for in HKEY_LOCAL_MACHINE, and if not there, the default is used. This includes the MainLexPath, MainLexFiles, HelpFile, and DebugFile properties. Similarly, the 16-bit SSCE DLL now reads and writes all properties in the [SSCE User] section of SSCE.INI. Properties not found in [SSCE User] are looked for in the [SSCE] section.
Problems with the declarations of the SSCE_InsertBlockText and SSCE_SetAutoCorrect functions in SSCE.BAS have been corrected.
The C and MFC as-you-type demos now correctly recognize accented characters.
The amount of flickering in the Visual Basic RealTime demo has been reduced.
A problem where the Options dialog could be displayed multiple times, or at the same time as other SSCE dialogs, has been corrected.
A problem where capital letters were not being reduced to lower case with SSCE_AUTO_CHANGE_PRESERVE_CASE_ACTION or SSCE_CONDITIONAL_CHANGE_PRESERVE_CASE_ACTION has been corrected.
A problem where attempts to add or remove a word from a text lexicon would fail has been corrected. The problem occurred when the directory pointed to by the TMP environment variable was on a different drive than the directory containing the text lexicon.
SSCE no longer incorrectly reports "Can't change word; probably out of space" when deleting a word at the end of a line in a rich-text control.
The "as you type" demos in C, MFC, Delphi, and Visual Basic now mark words which contain capitalization or other word-form problems in addition to misspelled words.
A problem where the 16-bit DLL did not honor the SSCE_SetDialogOrigin setting has been corrected.
The accuracy of typographical suggestions was improved, particularly for misspellings caused by inserted or deleted letters.
A problem was corrected where the Spelling dialog would add the other word associated with a word marked with a "conditional change" action to the suggestion list, but would not select the list item. This caused the Change button to be disabled, and forced the user to manually select the first list item.
The SSCE Windows DLL will now look for the MainLexPath, MainLexFiles, and HelpFile settings in the HKEY_CURRENT_USER registry tree, or in the [SSCE User] section of SSCE.INI if they are not found in the HKEY_LOCAL_MACHINE tree or [SSCE] section.
A problem which caused the Undo button to remain enabled in the Spell Check dialog even if no changes were available to undo has been corrected.
A problem which prevented the Visual Basic "real time" demo from checking pasted text has been corrected.
A problem which caused the MFC demo program to crash when characters were typed has been corrected.
A problem which prevented the "C" DlgDemo program from unmarking misspelled words after Ignore All or Add was selected in the context menu has been corrected.
A problem which caused the Visual Basic "real time" demo to go into a loop when the Add item was selected in the context menu has been corrected.
A number of new words was added to the accent.tlx file.
A number of new words was added to the American and British English dictionaries.
Improvements were made to the phonetic suggestion algorithm to improve its accuracy.
A problem which caused misspelled words to be marked incorrectly in the "C" DlgDemo program when multi-line text was inserted has been corrected.
A reference to non-existent include file "riched.h" in the SSCE source code has been removed.
The SSCE DLL now returns SSCE_UNSUPPORTED_ACTION_ERR (-13) if creation of a dialog box fails. This typically happens if the DLL is not built correctly; e.g., the dialog resources are not bound to the DLL at link time.
A problem which caused the spelling dialog to ignore the origin set via SSCE_SetDialogOrigin was corrected.
SSCE_GetLexId now accepts a NULL in the fileName parameter addition to an empty string.
A problem with text selection in the RichEdit20 control was fixed.
The default value of the IgnoreNonAlphaWords property was changed to TRUE.
A problem in the Visual Basic "as you type" spell checker example was fixed. The problem occurred if the first word was misspelled and a space was inserted before it.
A problem where an assertion failure was reported in the MFC "as you type" spell checker example was fixed. The problem occurred if the first word was misspelled and a space was inserted before it.
A change was made to the Visual Basic and Delphi "as you type" spell checker examples to reduce the amount of flickering.
Problems with selecting text in all "as you type" spell checker examples were fixed.
A problem was fixed where SSCE would loop when a very long misspelled word was checked.
Temporary files created when a user lexicon is updated are now created in the directory indicated by the TMP environment variable.
SSCE_CheckBlockDlg and SSCE_CheckCtrlDlg now correctly return SSCE_CANCEL_ERR if the user clicks the Cancel button.
This is a maintenance release issued to correct a GPF which occurred when the 16-bit SSCE DLL was used from Visual Basic.
The names of the SSCE DLLs have changed to SSCE5216.DLL (16 bit) and SSCE5232.DLL (32 bit). The DLL name changes to reflect changes in the SSCE API.
A new option, SSCE_IGNORE_NON_ALPHA_WORD_OPT, was added. This option is enabled by default. When this option is disabled, SSCE can be used to check non-alphabetic strings such as part numbers. The SSCE DLL refers to this option via the IgnoreNonAlphaWord property.
Functions SSCE_GetSelUserLex and SSCE_SetSelUserLex have been added to the Windows API. These functions get and change the name of the default user lexicon, which is the lexicon words are added to when the "Add" button is pressed in the Check-Spelling dialog.
A new option, SSCE_IGNORE_DOMAIN_NAMES_OPT, was added. This option determines whether strings that appear to be domain names (such as wintertree-software.com) are checked or ignored. The SSCE DLL refers to this option via the IgnoreDomainNames property.
Various changes were made to the way suggestions are obtained to improve both speed and accuracy.
The appearance of the Check-Spelling dialog has been updated to resemble spelling dialog used in Office97. The Change To field has been removed.
The Change and Change All buttons now obtain the replacement text from the Problem field if it has been modified, and from the selected item in the Suggestion list otherwise. The Lock Pos checkbox has been removed.
The SSCE_CheckCtrlDlg function now works correctly with RichEdit 2.0 controls. See "Checking third-party controls" in the SSCE Programmer's Guide for information on checking Edit, RichEdit, and RichEdit20A controls.
A number of additional corrections for misspelled words have been added to correct.tlx.
Example programs showing how to check spelling "as you type" have been added. These examples use the standard 32-bit RichEdit control, so they are usable only with 32-bit development environments under Win9x or NT 4.0 or later. The examples are included in the following directories:
SSCE_GetLexId no longer needs a full path in the fileName parameter.
Fixed a problem where the SSCE DLL continued to use the old file names after SSCE_SetMainLexFiles was called.
Some problems in autocorrect.tlx were fixed and some words were added to the English lexicons.
The SqLex program no longer accepts words containing TAB characters (characters with decimal value 9). The presence of TAB characters causes problems in compressed lexicons.
Fixed a problem where suggestions would not appear in possessive form if the misspelled word was in possessive form.
Certain words reported as offensive were removed from the English lexicons.
A problem where the "fancy" apostrophe (character code 146) was treated as a word separator has been corrected.
A problem where a word's action and other word would be incorrect in a text lexicon if the word was deleted and the lexicon file couldn't be saved was corrected.
The value of SSCE_CONDITIONAL_CHANGE_PRESERVE_CASE_ACTION in ssce.bas and ssce.pas was corrected.
A problem where long lexicon file names appearing in drop-down lists were truncated has been corrected.
A problem with the word count reported by SSCE_GetStatistics has been corrected.
The context display in the spelling checker dialog now scrolls and wraps correctly.
The tab order in the spelling checker and options dialog boxes has been corrected. A problem with conflicting accelerators in the options dialog box has been corrected. Also, various minor cosmetic improvements were made to the dialog boxes.
Some performance improvements were made to reduce the time needed to open a compressed lexicon.
Fixed a problem where words marked with the "exclude" action were sometimes being offered as suggestions.
Added some additional tests to better detect invalid or corrupt compressed lexicons.
Words containing no alphabetic characters (e.g., strings of digits, numbers containing decimal points, etc.) are now completely ignored and are not checked for spelling errors.
Added some additional words to accent.tlx.
Fixed a problems with the 16-bit version of SSCEVB_GetMainLexPath.
Trailing single quotes are now removed when possessives are removed.
Fixed a problem where no error would be reported if changes were made to a text lexicon but the lexicon image couldn't be written to disk.
Fixed a problem where file names containing paths relative to UserLexPath or MainLexPath were not resolved correctly.
Fixed a problem where SSCE_Suggest would crash if the size of the scores array was 0.
Fixed a problem where SSCE_SetBlockCursor returned a garbage return value.
Fixed a problem where SSCE_DelBlockWord would return -1 when the first word in a block was deleted.
SSCE_UNCAPPED_WORD_RSLT is now returned for words which are spelled correctly but capitalized incorrectly.
Fixed a problem where a crash would sometimes occur after many changes were made to a text control being checked.
Fixed a problem where no error would be reported if a change would cause the block passed to SSCE_CheckBlockDlg to overflow.
Fixed a problem where "Change All" would make a few replacements then stop working.
Fixed a problem where SSCE_FindLexWord would return SSCE_WORD_NOT_FOUND_ERR if the word was in possessive form.
Fixed a problem where long action descriptions were truncated in the dictiionaries dialog box.
Fixed a problem where the block size limit wasn't honored by SSCE_CheckBlockDlg when the showContext parameter was TRUE.
Text lexicons now associate an action and an alternate word with each word. This means that one lexicon file can now hold words which should be ignored, words which should automatically or conditionally replaced with other words, and words which should be excluded. It's no longer necessary to ship one text lexicon file for each action.
The automatic and conditional change actions which can be applied to words have variants which preserve the case of the checked word or use the case of the alternate word exactly as listed in the text lexicon. If the case of the checked word is preserved, SSCE will (for example) capitalize the substitution if the checked word was capitalized. If the case of the alterate word is used, SSCE can be used to expand simple abbreviations.
The compressed lexicon file format was changed for cross-platform portability. The SSCE compressed lexicons can now be used on all platforms, regardless of byte ordering.
The SSCE_DelBlockWord function now deletes leading white space rather than trailing punctuation and white space. This works better when the deleted word is at the end of a sentence.
Some new functions have been added to the basic SSCE API to support undoing changes to text blocks.
The spelling-checker dialog now includes an Undo button, which reverses the effect of the last change. Undo can be pressed a number of times to undo successive changes (in reverse order).
The dialogs displayed by the SSCE DLL are now fully "localizable." An application can provide alternate dialog templates for each dialog, and all of the text strings displayed by the dialogs in list boxes, changeable labels, error messages, etc. are obtained from a table in the .INI file or system registry. By supplying alternate dialog templates and an alternate string table, an application can now completely translate the dialogs displayed by the SSCE DLL into a language other than English.
The Spelling-Checker dialog now allows misspelled words to be deleted.
If the change-to field is empty, the Change button changes to Delete.
The Sentry engine can now support Unicode through a build option. Currently, this support is limited to the SSCE Source SDK. As part of this support, SSCE can now process single-byte characters from the Latin 1 (ISO-8859-1) character set or Unicode. Character sets ISO-8859-2 through ISO-8859-10 are no longer supported (use Unicode instead). The lexicon-compression API (SSCE_CompressLex*) creates a Latin 1 or Unicode compressed lexicon depending on how the engine was built. The Unicode engine can read both Unicode and Latin 1 compressed lexicons, but the Latin 1 engine cannot read Unicode compressed lexicons.
A problem which caused the 32-bit DLL to use the wrong permissions when accessing keys in the system registry has been corrected. The problem would occur when users other than the system administrator would run an application which used the DLL.
Copyright © 2015 Wintertree Software Inc.