Hello Visual Objects 2.8 users, News about Visual Objects Service Patch 2: Service Pack 2 will be free for all registered users of Visual Objects 2.8. (This is the last free service pack for 2.8) We plan to deliver SP2 available for download during the North American Summer. We will make an further announcement when we have a more specific date. List of changes in Visual Objects 2.8 since Service Pack 1 IDE General . Resolved several memory problems . When running in the Users directory VO now puts its files under the Documents folder and no longer in the Roaming Appdata folder (that last folder is invisible which makes it difficult to work with). Adam . Resolved several memory related GPFs . Resolved several problems that were caused by corrupted symbol tables. . Removed Thread Local Storage to support dynamic loading/unloading of cavoadam.dll . Resolved a problem with compilation of file based resources . The scan process for scanning changes in external files could slow down the system in some environments. We have made the following changes: o The scan frequency can be configured (Adam Options, ExternalFileTimer). The default = 1 second per iteration. o Setting the value to 0 will disable background file scanning o Each time it scans it scans a maximum of 10 external modules (was all modules in an app) This should fix the 'slow editor' problems some of you have reported. . Several internal changes to improve reliability and speed . Some functions in the Adam API would throw an assertion error for incorrect parameters (like NULL pointers) but still try to execute (and crash because of these NULL pointer). They now return an error value in these situations. . Committing pending changes to disk could be slow for large apps (like when you see the message 'Flushing compiler buffers' at the end of the compilation process). This speed has been increased. . Under certain 'memory low' situations a crash could occur. This has been resolved. . When touching an App or DLL, VO was trying to delete the DBG and VOM multiple times. This has been resolved. . Certain problems in the repository were not detected during reindexing. This has been resolved. . VTable changes in a class that is located in a library were not propagated to other libs/dlls/apps using the class. This could lead to problems when a DLL/EXE was linked incrementally. Compiler . The algorithm driving the compiler has changed. VO now compiles: o STRUCTS, DEFINES and UNIONS first o Then Classes in the order of their nesting level o Methods after the class they belong to o Functions and procedures last . This process is repeated until 0 errors are found, or until a couple of subsequent runs did not make any changes to the number of errors and/pr warnings . The compiler was generating an (incorrect) error for classes that have a typed assign with the same name as the class name. This has been resolved. . The compiler was not detecting an undeclared variable named 'M' or an undeclared variable named '_FIELD'. (It confused them with the prefixes M-> for memvars and _FIELD-> for fields) . The compiler could generate code for 16 bit or 8 bit operations that would cause an incorrect overflow error condition . Changes in the DLL name of an existing _DLL entity were not always forcing the system to relink the DBG. This has been resolved. . Resolved a problem when compiling Binary operations (such as _AND and _OR) that combine a BYTE and a WORD. . Resolved a problem when compiling IF statements with an empty TRUE block . Resolved a problem when sending a PSZ value to a function/method that expects a USUAL Linker . Resolved problem when generating AEF for a DLL when the path name had embedded dot characters . The linker was generating a REG file for an OCX and registring an OCX with an image that points to the VO28ORUN file. That has been changed: the image is now located in the OCX itself . Sometimes the linker would throw an exception for large resources. This has been resolved. . Changing the name of an external DLL in a _DLL entity did not force the DBG to be relinked. So the DBG had still a link to the old name in its import table. This has been resolved. Help . The Help window is no longer sitting on top of the IDE window Repo Browser . The Link button is now disabled for Libraries . Smarter refresh algorithms for New Apps and New modules . The position of the splitbar in the Browse window is restored at startup . Opening a Tool (such as Window Editor) from the Listview could result in a 'repo is corrupt' message because the IDE was mixing Entity and Module identifiers SCC . Resolved several refresh issues related to SCC in the IDE. . Resolved a problem when importing code after a module was retrieved from the History Dialogs . Resolved a problem that reconnecting one module would reconnect all modules from an app . 'Make Local' and 'Remove from SCC' nopw ask for confirmation. . When an error occurred connecting to SCC at startup, then the warning message was displayed behind the splash screen. This has been resolved. Debugger . Added F11 key as alias for F8 (for those of us that also work in Visual Studio) . Breakpoints are now saved when you set/clear them and not when the debugger stops. . Watchpoints are now saved when you set/clear them and not when the debugger stops. . Resolved a problem that sometimes breakpoints were set at the wrong line number Source Code Editor . Added control on Find Results Dialog to show Search Criteria . Added Print and Save button on Find Results Dialog . When editing an entry from the Find Results Dialog, the matching word is selected in the editor buffer . Ctrl-M and Ctrl-Shift-M now properly selects the leading whitespace on a line . Added header line with module name and app name when printing from Editor . Built in functions such as IF(), IIF(), _CHR(), _SIZEOF(), _TYPEOF(), _AND(), _OR() etc now show parameter tips . Added TokenTips for literal Symbols . Resolved a crash that could occur when saving an editor buffer that started with a non-entity . If the changes to an entity did not change the size of the entity, then the changed source of an entity was not written to disk . Added menu items for 'Remove Current token' and 'Clear all tokens' . Added Ctrl-Shift-X shortcut to clear all tokenstips from the editor buffer . The Background parsing speed for Entity delimiters can now be configured from the Tools/Options dialog . The Token parsing speed can now also be configured from the Tools/Options dialog . The editor would allow source code in modules that were under SCC to be edited even when they were not checked out and not disconnected but when the server was inaccessible. . When the SCC server is not accessible and you start typing, then VO asks if you want to disconnect the current module . The default tabsize on the Tools/Options dialog was 4, but in the editor it was 3. Both are now set to 4. . Added 'Goto' entry on the context menu when a token is selected of type class, struct and union . Resolved a memory leak in the AutoType code . Closing the 'Find Results' dialog after the editor window could sometimes cause a problem. DbServer Editor . When saving FieldSpecs the editor could overwrite code in modules that are under SCC and not checked out. This has been resolved. Window Editor . Added support for some COM Interfaces needed by recent ActiveX Control. Some controls that did not display properly before should now work as expected in the Wed and in test mode. . The properties for ActiveX controls on the property window were not always correctly displayed. . A problem was resolved when restoring ActiveX controls from the MDF file, especially when the ActiveX control did not support the IClassFactory2 interface. . Some ActiveX controls were causing a crash for certain DoVerb commands. This has been resolved. Image Editor . The position of the Palette window was not properly saved & restored. . When the original resource is not available, VO now properly handles this . The Save/Open dialogs now use the modern explorer style look SQL Editor . No signifiant changes OleAutomation Code generator . Improved speed . The Automation Server tool now uses the typelibrary name to name the module with the defines. For example 'Outlook - Defines' . When a typelibrary includes another typelibrary (for example Microsoft Outlook includes Microsoft Office) then the defines for that other type library are also generated Changes in the Runtime and Class Libraries Runtime . The default setting for SetPath() is now the path from the Environment . The OS() function was returning an incorrect name for Windows Vista (with a TRUE parameter that is) . The Integer function now returns a LONG with value 0 when a FLOAT with value 0.0 was passed in. . When a float operation returned an numeric overflow, then the next float operation could fail. This has been resolved. OLE Runtime . Added support for some COM Interfaces needed by recent ActiveX Control. Some controls that did not display properly before should now work as expected . A problem was resolved when loading ActiveX controls from the MDF file, especially when the ActiveX control did not support the IClassFactory2 interface. . Some ActiveX controls were causing a crash for certain DoVerb commands. This has been resolved. DBF RDD . Goto now also accepts a Float VO Class Libraries in General . PSZ(_CAST was replaced by String2Psz() on all occations . Some problems were solved that were discovered when compiling the SDK in Vulcan System Library . No significant changes Win32 . Resolved some errors in prototype definitions System Classes . FileSpec:Copy() was not restoring the error handler when an error occurred. This has been resolved. . FileSpec:Move() was not restoring the error handler when an error occurred. This has been resolved. . FileSpec:TimeChanged now properly follows the current time format . FieldSpec:PerformValidations() was not always handling decimals correctly. This has been resolved. . Hyperlabel:Error() now always sets the Error property, even when an incorrect error object is sent in OLE Classes . Made some changes to the internals of OLEAutoObject to optimize the performance. Method names for example are not read anymore from the typelibrary when the object is instantiated, but on the moment they are needed . OleAutoObject:Init() The default value for the fNoFuncArray parameter has been changed from TRUE to FALSE for performance reasons . Resolved a memory leak in OleAutoObject:__ReportException() . Resolved a memory leak in __VOArrayFillDimension() RDD Classes . DbServer:ClearIndex(), DbServer:Pack() , DbServer:SetOrder() and DbServer:Update() now flush pending changes (in an optimistic locking scenario) . Resolved problems in DbServer:Replace() SQL Classes . Resolved several Data Type errors . The SqlDeleteWhiteSpace() function was stripping CRLF characters. That could be dangerous for commands with embedded end of line comments, such as: DELETE FROM -- do something WHERE Id = 1 would become DELETE FROM -- do something WHERE Id = 1 . Resolved a 'memory low' error when passing a sql statement with no result columns to the SqlSelect classes. . Resolved a problem when writing Long Text values . Resolved a problem in SqlSelect:__RecCount() that could cause bad performances for some ODBC drivers . SqlSelect:ExtendedFetch was not properly saving changes to a newly appended row . SqlSelect:BOF and SelSelect:EOF now return FALSE when the cursor is on a new row. GUI Classes . _WcGetControlbyHandle() is now typed to return a CONTROL object . _WcGetMenubyHandle() is now typed to return a MENU object . _WcGetWindowbyHandle() is now typed to return a WINDOW object . The mechanism that was used to register a control window with a control has changed . The mechanism that VO uses to register controls and windows with their handles has changed. . There are now a set of new functions (__WcSelfPtrAlloc(), __WcSelfPtrFree(), _WcSelfPtr2Object()) to manage the Self PTR structures . There are also new functions that manage the registration of Selfptr structures with handles (__WcRegisterProperty(), __WcUnRegisterProperty() and __WcGetProperty()) . On all spots where VO registers handles with objects these functions are now used. . GUIExit() now kills any pending timers that were registered with __WcRegisterTimer() . Resolved Slider problem . Resolved problem that tooltips longer than 80 characters were truncated . DialogWindow:Init() now accepts a pointer to a dialog template in memory as 2nd parameter. . __DDImp:Init() now supports a dialog style as 3rd parameter and uses the new memory dialog template feature to create the right kind of window . BitMap:Destroy() and Icon:Destroy() were not Unregistering themselves . RichEdit:__Value now properly sets the __value from the parent class . Richedit:SaveToFile was not properly checking its parameters . StandardFolderDialog:Show() no longer uses IMalloc to free memory but CoTaskMemFree(). . TabControl:Resizes() now calls TabColtrol:__Adjustpage(). . Owner alignment now supports a new mode where you can specify that a control should have a fixed percentage of the width /height of its parent or be located at a position that is a percentage of the owners size. See the new owneralignment sample and the help file for more info Report Classes . ReportQueue::__InitCAQRT() was returning 0 instead of FALSE for some error conditions. Internet Classes . CEMail:__GetContentInfo(): Resolved problem with certain attachment types . Added support for 'Transparency' (RFC 2821 chapter 4.5.2) to CSmtp:SendMail . Resolved memory problems in CSocket:getpeername() and CSocket:getsockname() . CStorage:__StreamDecode() adds support fpr QP encoded attachments . CStorage:AttachmentClose() now properly clears the _cRest variable to avoid extra 'garbage' characters at the end of certain attachments . __GetFileData() now correctly handls large file sizes and time zones . __GetTime() now properly translates between UTC and Local time Internet Server classes . No significant changes OLE Server classes . No significant changes GrafX Software