CodeSite 4 All Modifications The following is a list of all of the modifications that have been made for all builds of CodeSite Version 4. -------------------------------------------------------------------------------- Build: 4.6.1 Date: 27 May 2010 -------------------------------------------------------------------------------- COMPILER/IDE SUPPORT CodeSite 4.6.1 now supports Visual Studio 2010 and Delphi Prism 2011. The full list of supported IDEs and compilers in CodeSite 4.6.1 is: Delphi Prism 2011 Visual Studio 2010 Embarcadero RAD Studio 2010 CodeGear RAD Studio 2009 Visual Studio 2008 CodeGear RAD Studio 2007 Borland Developer Studio 2006 Visual Studio 2005 Delphi 2005 Visual Studio .NET 2003 Delphi 5, 6, and 7 C++Builder 5 and 6 CODESITE LIVE VIEWER/FILE VIEWER 1. The automatic parsing of simple data messages (e.g. "Height = 24") introduced in version 4.5 that resulted in only the value portion (i.e. 24) appearing in the Inspector has been removed. As a result, the Inspector Pane shows the full content of the message. 2. The Inspector Pane toolbar now includes a new Copy Value button. For simple data messages, the Copy Value button copies the value portion of the message to the clipboar. For example, if the message is "Height = 24", then 24 is copied to the clipboard. The Copy Value button is also available when inspecting Objects, Properties, and Collections. In this inspectors, the Copy Value button copies the value portion of the selected property to the clipboard. 3. The Property/Value inspector used when inspecting Objects, Collections, and Custom Properties has been updated to utilize a proportional scroll bar. This change makes it much more effective when scrolling through the list of properties. 4. The Xml Structure Inspector has been enhanced to include a new Syntax View. Right-click on the Xml Inspector and choose between Structure View or Syntax View. In syntax view, the Xml data is displayed in a syntax highlighted format. CODESITE LOGGING CLASSES 1. The VCL-base TCodeSiteLogger.SendRegistry method was modified to address an issue that could occur when sending registry data entries that contained large amounts of binary data. 2. The VCL and VCL.NET based TCodeSiteLogger.SendRegistry methods were modified such that all registry keys are opened in ReadOnly mode. CODESITE .NET CONFIGURATION 1. Added support in CodeSiteConfiguration for reading LogFile attributes logByDate and logByDateFormat attributes when loading config files. CODESITE CGI DISPATCHER 1. The CSCgiDispatcher.exe has been updated to address a Request.Content issue affecting CGI applications built with Delphi 2009. -------------------------------------------------------------------------------- Build: 4.6 Date: 24 Nov 2009 -------------------------------------------------------------------------------- CODESITE LOGGING CLASSES 1. The VCL logging classes have been updated to fix an issue where the published properties of multi-level embedded object properties were not correctly organized during logging. 2. The FCL.NET logging classes in the Raize.CodeSiteLogging assembly have been updated to more appropriately handle classes that contain properties that reference a generic type. CODESITE DISPATCHER 1. The CodeSite Dispatcher has been updated to fix an issue that could occur when using the UDP protocol to transfer messages to another computer system. 2. The CodeSite HTTP support dispatchers (CSCgiDispatcher.exe and CSIsapiDispatcher.dll) have been updated in this version to address some transfer issues. CODESITE LIVE VIEWER/FILE VIEWER 1. The CodeSite Viewers have been updated to fix an issue when exporting messages to XML. In previous versions, if the CodeSite messages contained XML reserved symbols (e.g. "<", ">", etc.), the symbols were not getting correctly escaped in the resulting exported XML document. 2. Updated the Object Inspector and Table Inspector to handle Mouse Wheel changes more appropriately. Instead of moving the selection up or down by 1 row when the mouse wheel is spun, the scroll position of the inspector is changed by the number of lines specified in the Mouse Control Panel Applet. The selected property or selected cell does not change. This makes these two inspectors more consistent with the way other inspector type controls handle the mouse wheel. 3. The Object Inspector now has a new context menu that contains the following two menu items: Copy Selected Property Value Copy All Properties & Values The first menu item copies the text in the Value portion of the selected property to the clipboard. The second menu item operates just like the Copy button on the inspector toolbar. That is, all of the properties and their values are copied to the clipboard. 4. The Table Inspector now has a new context menu that contains the following three menu items: Copy Selected Row Values Copy Selected Row Values (as Properties) Copy All Rows The first menu item concatenates the value of each column in the selected row of the grid. Each column value is separated by a character, and then copied to the clipboard. The second menu item creates a property list (name=value list) using the column headings as property names and the selected row values and the property values. The resulting list is copied to the clipboard. The third menu item operates just like the Copy button on the inspector toolbar. That is, the entire contents of the grid are copied to the clipboard. 5. The CodeSite Viewers now support Time Difference Navigation. Specifically, a new mode has been added to the Message Navigation buttons (First, Previous, Next, and Last) to allow navigating to a message where the amount of time that has passed since the previously logged message exceeds some threshold. This new navigation mode is extremely helpful is locating time gaps in a message log. To use Time Difference Navigation, simply click on the "Browse for ..." drop-down button located between the Previous and Next navigation buttons. At the end of the popup menu, a new Time Difference menu item is available. Clicking the Time Difference menu item results in a dialog box asking for a threshold value (in milliseconds). Clicking OK closes the dialog box and puts the Viewer into Time Difference Navigation mode. You can then use the First, Previous, Next, and Last navigation buttons to locate messages where the Time Difference of that message exceeds the specified threshold. To toggle back into normal Message Navigation mode, simply select the Time Difference menu item again from the drop down list of message types. The previous Message Navigation settings will be restored. CODESITE FILE EXPORTER 1. The CodeSite File Exporter has been updated to fix an issue when exporting to XML. In previous versions, if the CodeSite messages contained XML reserved symbols (e.g. "<", ">", etc.), the symbols were not getting correctly escaped in the resulting exported XML document. -------------------------------------------------------------------------------- Build: 4.5 Date: 07 Sep 2009 -------------------------------------------------------------------------------- COMPILER/IDE SUPPORT CodeSite 4.5 now supports Embarcadero RAD Studio 2010 (including Delphi 2010, C++Builder 2010, and Delphi Prism 2010). The full list of supported IDEs and compilers in CodeSite 4.5 is: Embarcadero RAD Studio 2010 CodeGear RAD Studio 2009 Visual Studio 2008 CodeGear RAD Studio 2007 Borland Developer Studio 2006 Visual Studio 2005 Delphi 2005 Visual Studio .NET 2003 Delphi 5, 6, and 7 C++Builder 5 and 6 CODESITE LOGGING CLASSES Fixed issue that resulted in a Stack Overflow exception when logging an image in Delphi 2009. Fixed issue with the declarations of SendScreenShot and SendWindowHandle methods in the CodeSiteLogging.hpp unit for C++Builder 2006 and 2007. CODESITE DISPATCHER Several improvements were made to the overall reliability of the CodeSite Dispatcher in dispatching messages in a variety of complex situations. The following highlight some of the more significant changes: Updated the TCP communication processing utilized in the Dispatcher and in the process resolved a couple issues involved in receiving TCP messages from a large number of .NET managed applications simultaneously. Replaced MSXML-based parsing engine with custom XmlParser. This change eliminates the dependency on the COM solution as well as provide greater flexibility and performance. In addition, this change eliminated the "Invalid Unicode Error" that would occassional occur. Overall error handling in the CodeSite Dispatcher has been improved. The Dispatcher Log has been enhanced to show more pertitent information. This Dispatcher Log also automatically persists itself when the Dispatcher is closed. Fixed a couple memory leaks. CODESITE LIVE VIEWER/FILE VIEWER When inspecting simple data messages (such as Height=24), the Viewer now only displays the data portion of the message. For example, if the currently selected message in the message list looks like this: Caption=CodeSite Live Viewer Then, in the Inspector Pane, only CodeSite Live Viewer will be displayed. This change makes it very easy to copy the data to the clipboard and works very well when sending multi-line data such as SQL statements or XML data. Fixed issues with exporting logs with collapsed methods to text files. When copying a single message to the clipboard, the leading spaces representing the indent level are automatically removed. When copying multiple messages, the indenting spaces are left in. Fixed Index out of Range exception that would occur when exporting to a text file and the last message in the view was a collapsed method. When printing messages from the viewer, a Font Size can now be specified. The Print Font Size is persistent and separate from the size used to display the messages in the message list. The Print Selection setting in the Print Dialog is now persistent. Fixed problem when trying to print a selection and there are no messages currently selected in the view. The updated system menu in the CodeSite Live Viewer and File Viewer has been restored so that the Clear All and Add Separator commands are accessible from the viewer's application icon in the task bar. The tabs that display additional views have been updated to show more contrast so that it is easier to pick out the currently active tab. CODESITE CONTROLLER The CodeSite Controller is now able to Start and Stop the CodeSite Dispatcher when the Dispatcher is installed as a service. The Controller is now able to display the Dispatcher Log even if the Dispatcher is running as a service. Fixed issue where Controller would not detect the Dispatcher running as a service if user did not have administrator privileges. CODESITE METHOD TRACER FOR DELPHI The Method Tracer for Delphi has been updated to work with Delphi 2010. GENERAL Code Snippets for use in Visual Style have been added for the Oxygene (Delphi Prism) language. -------------------------------------------------------------------------------- Build: 4.4 Date: 24 Nov 2008 -------------------------------------------------------------------------------- GENERAL The CodeSite Log File format has been extended to differentiate between ANSI-based messages and UTF8-based messages. Updated the mechanism used to store settings for CodeSite applications. In the previous version, it was possible on rare occasions that the settings would not be loaded correctly. All CodeSite applications have been updated to allow the display of a preview window when hovering the mouse over the taskbar item on Windows Vista. CODESITE LOGGING CLASSES All of the CodeSite Logging classes have been updated to utilize the new extended message format to differentiate between ANSI and UTF8 messages. The SendVersionInfo method in the VCL interface has been updated so that it is now able to capture and log version information from other locales. The CSIdWinsock2.hpp and CSIdGlobal.hpp files have been updated to eliminate a namespace casing issue. CODESITE DISPATCHER The CodeSite Dispatcher has been updated to accept all CodeSite message formats (including the new ANSI and UTF8 formats) and dispatch them in a uniform format to the Live Viewer or to a CodeSite Log File. CODESITE LIVE VIEWER/FILE VIEWER The CodeSite Live Viewer and File Viewer have been updated to fix an issue where loading an older log file that contained extended ANSI characters would get displayed incorrectly. The time it takes to load a file into both viewers has been significantly improved in this release. The Xml Structure Inspector has been enhanced in this release such that when copying the contents of the Xml Structure Inspector pane to the clipboard, the XML data is reformatted to be more readable. -------------------------------------------------------------------------------- Build: 4.3 Date: 20 Oct 2008 -------------------------------------------------------------------------------- COMPILER/IDE SUPPORT CodeSite 4.3 supports the following IDEs and Compilers CodeGear RAD Studio 2009 Visual Studio 2008 CodeGear RAD Studio 2007 Borland Developer Studio 2006 Visual Studio 2005 Delphi 2005 Visual Studio .NET 2003 Delphi 5, 6, and 7 C++Builder 5 and 6 GENERAL The CodeSite Log File format is unchanged. However, in 4.3, Unicode data in CodeSite messages is perserved in a log file by encoding the data as UTF8. CODESITE LOGGING CLASSES The VCL-based logging classes have been updated to support CodeGear RAD Studio 2009 and specifically the new Unicode support added to Delphi 2009 & C++Builder 2009. All logging classes (VCL | VCL.NET | FCL.NET) now include an AddResetSeparator method, which results in a special separator being added to the message log, and more importantly, the indent level of the log is reset to zero. For the .NET-base logging classes (VCL.NET | FCL.NET), the Connection classes (T|CodeSiteCopyDataConnection and T|CodeSiteTcpConnection) have been modified so that the CodeSite message data that is being sent to the Dispatcher is encoded correctly such that no Unicode content is lost in the transfer. Also in the .NET-base logging classes, the T|CodeSiteTcpConnection class has been redesigned to utilize the TcpClient and NetworkStream classes instead of using a Socket instance directly. This version also fixes the problem in the VCL logging interface where SendMemoryStatus would report 100% memory utilization on systems with 4GB memory. The problem was fixed by switching to use the GlobalMemoryStatusEx function instead of GlobalMemoryStatus. MSDN reports that GlobalMemoryStatus returns incorrect results. CODESITE LIVE VIEWER/FILE VIEWER The CodeSite Live Viewer and File Viewer now fully support CodeSite messages with Unicode message content. When utilizing multiple views, the active tab now displays a Close button, which can be used to close that tab. (Please note that the All Messages tab cannot be closed.) The CodeSite Viewers have been updated to handle Unicode message content when saving messages to a CodeSite Log File, or exporting messages to an XML file or Text file. The printing support in the Inspector Pane has been enhanced in this version. Specifically, margins are applied to the output, as well as a title on each page including page numbers. IMPORTANT: If you have created custom plug-ins for the CodeSite Live/File Viewer, you will need to recompile them using CodeGear RAD Studio 2009. CODESITE DISPATCHER The TCP communication software utilized by the CodeSite Dispatcher has been updated in this version. The major benefit of this change is the elimination of a CPU utilization problem that would occur under Vista when a .NET managed application sent CodeSite messages via TCP to the Dispatcher. The CodeSite Dispatcher now fully supports CodeSite messages with Unicode message content. In addition, Unicode strings can be specified for Path Variables and Blocked Categories. The CodeSite Dispatcher has been updated to handle Unicode message content when saving messages to a CodeSite Log File. In this version, when the Dispatcher is running in Restricted mode, it is no longer possible to double-click on the the Dispatcher icon to display the Settings dialog. CODESITE CONTROLLER On the Status page of the CodeSite Controller there is now a View Log button, which provides access to the Dispatcher log even when the CodeSite Dispatcher is running in Stealth mode. Like the CodeSite Dispatcher, the CodeSite Controller supports Unicode strings for Path Variables and Blocked Categories. CODESITE FILE EXPORTER - COMMAND LINE UTILITY The CodeSite File Exporter has been updated to handle Unicode message content that may be in a log file. CODESITE METHOD TRACER FOR DELPHI The Method Tracer for Delphi has been updated to work with Delphi 2009. -------------------------------------------------------------------------------- Build: 4.2 Date: 08 Jan 2008 -------------------------------------------------------------------------------- COMPILER/IDE SUPPORT CodeSite 4.2 supports the following IDEs and Compilers Visual Studio 2008 CodeGear RAD Studio 2007 Borland Developer Studio 2006 Visual Studio 2005 Delphi 2005 Visual Studio .NET 2003 Delphi 5, 6, and 7 C++Builder 5 and 6 CODESITE LOGGING CLASSES Reorganized the BDS 2006 and RAD Studio 2007 runtime packages for the non-data-aware VCL based logging classes. Specifically, both IDEs now utilize the same CodeSiteLoggingVcl100.bpl runtime package, instead of having separate packages for each IDE. Separate packages are still required for the CodeSiteDBToolsVcl package because of changes in DBX4 between the two IDEs. The benefit of this change is that packages built in BDS 2006 that require the CodeSiteLoggingVcl package can be loaded without problems into RAD Studio 2007. Added optional Precision parameter to the overloaded Send method that handles sending floating-point values (e.g. Double, Single, Extended) in all supported frameworks. This parameter allows you to specify the number of digits after the decimal point. Added optional Precision parameter to the overloaded AddNameValuePair method of TCodeSiteFormatter (VCL and VCL.NET) that handles adding Extended values. This parameter allows you to specify the number of digits after the decimal point. Added optional AxHex parameter to the overloaded AddNameValuePair method of TCodeSiteFormatter (VCL and VCL.NET) that handles adding unsigned integers. If AxHex is set to True, then the unsigned integer is formatted as a hexidecimal number. Added a new overload to the SendXmlData method in the VCL and VCL.NET logging classes. The new overload accepts a string parameter containing all of the XML data. The original SendXmlData method is still available and accepts a TStrings parameter containing the XML data. Added new SendColorARGB method to VCL and VCL.NET logging classes. The method takes a color value represented as an unsigned 32-bit integer where the high byte is the Alpha channel and the low byte is the Blue value. That is, ARGB format. This format is used in GDI+ and .NET. Fixed race condition that could occur in VCL logging classes if too many threads attempted to call CodeSiteManager.SetThreadName simultaneously. Added new Sending event to the FCL.NET CodeSiteLogger and CodeSite classes (equivalent to OnSendMsg event in VCL classes). This event occurs just before a CodeSite message is sent. Handle this event to preview the message information, redirect the information to a custom location (e.g. database table), or perform custom filtering by cancelling the sending process for select messages. The process by which object properties are obtained in the FCL.NET and VCL.NET logging classes has been redesigned such that the resulting list of properties more closely matches the properties displayed for an object selected in the .NET property grid. For example, only browsable properties are recorded. Nested properties for certain types (e.g. Fonts) are also recorded. When logging property values for a specified object, the FCL.NET and VCL.NET logging classes use an updated format to clarify the resulting data values and make them easier to read. Added new WriteDateTime method to the VCL logging classes to match the SendDateTime method for writing TDateTime values to the Scratch Pad. This method also has the side benefit of allowing Single, Double, and Extended values to be formatted correctly as numeric values instead of as TDateTime values. CODESITE LIVE VIEWER/FILE VIEWER The viewers now correctly displays CodeSite messages that have been marked as custom message types. The Clear All toolbar button is always enabled. This makes it consistent with the Clear All View menu item added to the application system menu. Fixed scroll bar issue in the string/text inspector. Fixed the incorrect labeling of the Cancel button in the Find dialog box. Fixed issue with various message boxes that would replace ampersands (&) with underscores (_). Added confirmation dialog box to the Clear Bookmarks command. This dialog can be surpressed in the Options dialog. Fixed issue where exporting CodeSite messages to XML would produce invalid XML resulting from non-translated special characters (e.g. ", &, <, and >). These characters are now correctly translated to their appropriate XML notation (e.g. ", &, <, and >). The Xml Structure Inspector now supports copying its contents to the clipboard. Fixed issue where the File Viewer would prompt for a file name when saving a modified log file. The Save command now simply saves the modified log to the originally opened log file. Fixed issue where attempting to collapse an ExitMethod message without a matching EnterMethod message resulted in the wrong method being collapsed. The Find dialog box settings (e.g. Direction, Origin) are now persisted between sessions. CODESITE DISPATCHER Fixed problem where Alias destinations were not getting resolved correctly unless the CSDispatcher.ini file was located in the same directory as the CSDispatcher executable. Fixed problem where Dispatcher would under certain circumstances report that a message was received for an invalid destination when in fact the destination was indeed valid. CODESITE CONTROLLER Fixed problem where the CodeSite Controller would beep on exit. CODESITE FILE EXPORTER - COMMAND LINE UTILITY Fixed issue where exporting CodeSite messages to XML would produce invalid XML resulting from non-translated special characters (e.g. ", &, <, and >). These characters are now correctly translated to their appropriate XML notation (e.g. ", &, <, and >). GENERAL This version of CodeSite includes custom code templates and code snippets for the various IDEs that are supported. Code templates and snippets are shortcuts for entering code, and the ones included with CodeSite make it easier to enter various CodeSite statements into your source code. For example, typing "css" into your IDE's code editor followed by pressing the appropriate expansion key results in a CodeSite.Send statement being generated. The exact format of the statement will depend on the language currently being used: Delphi: CodeSite.Send( 'data', data ); C#: CodeSite.Send( "data", data ); C++: CodeSite->Send( "data", data ); In the above examples, the data identifier is a replacable parameter and after expanding the css template/snippet, you can simply type over the data string with a more appropriate value. The following is a list of all the templates provided: Shortcut Template/Snippet css CodeSite.Send(...) cst CodeSite.SendNote(...) csw CodeSite.SendWarning(...) cse CodeSite.SendError(...) csr CodeSite.SendReminder(...) csn CodeSite.EnterMethod(...) csx CodeSite.ExitMethod(...) csk CodeSite.AddCheckPoint csp CodeSite.AddSeparator cs1 CodeSite.Send( Level1, ... ) // Red cs2 CodeSite.Send( Level2, ... ) // Orange cs3 CodeSite.Send( Level3, ... ) // Yellow cs4 CodeSite.Send( Level4, ... ) // Green cs5 CodeSite.Send( Level5, ... ) // Blue cs6 CodeSite.Send( Level6, ... ) // Indigo cs7 CodeSite.Send( Level7, ... ) // Violet -------------------------------------------------------------------------------- Build: 4.1 Date: 02 May 2007 -------------------------------------------------------------------------------- CODESITE LOGGING CLASSES The CodeSite logging classes have been updated to support Delphi 2007. Even though Delphi 2007 uses the same VCL version as BDS 2006 (i.e. vcl100), Delphi 2007 includes a new version of the dbExpress technology. As a result, the CodeSite Logging Classes and specifically the CodeSite DB Tools have been updated to reflect the new version of dbExpress. The CodeSite packages that support Delphi 2007 use a 105 suffix. Although Delphi 2007 utilizes vcl100, the changes in the dbExpress technology prevent the CodeSite packages from using the 100 suffix for Delphi 2007 because they are not not compatible with BDS 2006. The BDS 2006 CodeSite packages continue to use the 100 suffix. With the changes to the Dispatcher (see below) it is no longer necessary to have your logging classes connect to the Dispatcher using Tcp when running under Vista. In previous versions of CodeSite 4, if your app was running under Windows Vista, it was necessary to call CodeSiteManager.ConnectUsingTcp at the start of your program to enable CodeSite messages to get to the Dispatcher. This was necessary because the default connection method was blocked by Windows Vista. This is no longer an issue, as the default connection method is no longer blocked by Vista. Fixed memory leak when using LogEvent, LogWarning, or LogError methods in TCodeSiteLogger. The C++ Header files for CodeSite Logging Classes, specifically the Indy classes used in CodeSite, have been updated to remove ambiguities and collisions with other headers that utilitize WinSock2 headers. CODESITE LIVE VIEWER/FILE VIEWER The Hierarchy inspector has been updated to fix a problem that would cause tree nodes to be misplaced in the hierarchy under certain conditions. Under certain conditions, making the Inspector Pane very thin resulted in an "Invalid Wordbreak Setting" exception. This has been fixed. The File|Export process now recognizes the columns that are visible in the message display and only includes the visible columns when exporting to a text file (*.txt). In addition, the flatten struture setting is also honored when exporting to text files. Xml exporting still includes all message details and does not contain indenting as the struture is determined by the message type. Under certain conditions, the hint windows displayed in the message list for long messages would either not appear, or appear incorrectly positioned. This has also been fixed. An "Add Separator" menu item has been added to the System Menu of the CodeSite Live Viewer. This along with the already existing "Clear All" menu item, provides quick access to adding a separator to the current log even when the Live Viewer is mimized in the system tray. The Help button in the Options dialog box now displays the correct help page. The Live Viewer and File Viewer will now snap to the edge of the screen as you move the main window closer to the edge. CODESITE DISPATCHER The CodeSite Dispatcher no longer needs Administrator privileges in order to run. The most noticeable change is that you no longer receive UAC prompts when running the Dispatcher on Windows Vista. The recording of state changes in the CodeSite Dispatcher is now handled via an in-memory log accessible from the Dispatcher's menu. Previously the Dispatcher log was a separate file. However, because of the various security protections in place and different levels of privileges granted there was no consistent location for saving the Dispatcher Log file. This was especially problematic when the Dispatcher was run as a service. Furthermore, much of the information regarding state changes in the Dispatcher is repetitive and the new internal log structure recognizes this and condenses the information as appropriate. The CodeSite Dispatcher no longer utilizes the Event Log for recording state changes in the Dispatcher. In addition to requiring elevated privileges, Event Log access is no longer needed as a result of the changes described above. When running the CodeSite Dispatcher under Windows Vista, 16-color icons (used in Windows 2000) were displayed in the system tray. This has been fixed and the more effective 256-color icons are displayed when running under Windows XP or Windows Vista. CODESITE CONTROLLER Because of the above changes to the CodeSite Dispatcher, the CodeSite Controller is now able to correctly detect and communicate with the CodeSite Dispatcher when running under Windows Vista. CODESITE METHOD TRACER FOR DELPHI The CodeSite Method Tracer for Delphi has been updated to work in BDS 2007, which is also known as Delphi 2007. GENERAL The user interfaces of all CodeSite applications have been updated to provide a consistent appearance across all versions of Windows including Windows Vista. -------------------------------------------------------------------------------- Build: 4.0.2 Date: 20 Dec 2006 -------------------------------------------------------------------------------- CODESITE LOGGING CLASSES * Fixed issue that prevented applications built with C++Builder in Borland Developer Studio 2006 from statically linking in the CodeSite logging classes. * The SendStreamAsHex logging method in VCL.NET now correctly captures the complete stream data. * Sending objects (in VCL.NET) with Char properties set to the null character (i.e. #0) no longer generate an invalid unicode character error in the CodeSite Dispatcher. CODESITE LIVE VIEWER/FILE VIEWER * The scroll bar in the message list now correctly navigates to the end of the list when dragging the scroll box. * The bookmarks are now associated with the logical position of a message in the message list as opposed to the message's physical location in the list. * When jumping to a bookmark that is hidden because of a collapsed methods, the methods are automatically expanded so that the bookmark becomes visible. * When inspecting the properties of an object, the title bar in the Inspector pane no longer wraps the text or clips the bottom portion of the title text. CODESITE DISPATCHER * The CodeSite Dispatcher now starts correctly even if the Event Log service is not currently running. -------------------------------------------------------------------------------- Build: 4.0.1 Date: 25 Oct 2006 -------------------------------------------------------------------------------- GENERAL * Fixed problem where CS4.exe install program would inadvertiently remove a portion of the Raize Components 4 entry in the Delphi Search Path if the user uninstalled CodeSite 3 before installing CodeSite 4. CODESITE LOGGING CLASSES * Fixed header file compilation issues when using C++Builder in Borland Developer Studio 2006. CODESITE LIVE VIEWER/FILE VIEWER * The New View dialog box now populates the Message Text field with the text of the currently selected message in the message log. * Fixed display problem when using mouse panning in the Collection Inspector. * Added IntelliMouse panning support to message log and other parts of the Live Viewer and File Viewer. * Alignment of Computer column header now matches the column content. * Resovled various theme and user interface style issues. CODESITE DISPATCHER * The CodeSite Dispatcher now keeps track of active connections (from T|CodeSiteLogger instances) and restores the connections if the Dispatcher is shutdown and restarted. This is most useful when connecting to a remote Dispatcher that gets restarted. * Fixed problem where the Dispatcher would report an invalid time error when receiving messages from a .NET application and the Time Separator was set to something other than a color (:). * Fixed problem where the Dispatcher would not start correctly if the user account did not allow access to the HKEY_LOCAL_MACHINE registry branch. * All message types in the Blocked Messages section of the Dispatcher Settings now correctly toggle when the Block All or Forward All buttons are pressed. CODESITE CONTROLLER * The CodeSite Controller now correctly identifies the situation of a missing CSDispatcher.ini file. In the initial release, the Controller would report that you needed administrator rights to modify the Dispatcher settings even when the user had administrator rights. -------------------------------------------------------------------------------- Build: 4.0 Date: 22 Sep 2006 -------------------------------------------------------------------------------- CODESITE LOGGING CLASSES * The primary logging class used to capture, record, and transmit CodeSite logging messages has been changed from T|CodeSiteObject to T|CodeSiteLogger. The old classes are still available for backward compatibility, but for new applications, the new class names should be used. This change does NOT affect the global CodeSite object in VCL and VCL.NET, nor the static class in FCL.NET. * The TransportMethod property has been removed from T|CodeSiteLogger. Configuring the connection to the CodeSite Dispatcher has been replaced with the new methods listed in the next item. * Added several new methods to the CodeSiteManager for configuring the default connection used by T|CodeSiteLogger instances when connecting to the CodeSite Dispatcher. The new methods are: ConnectUsingCopyData; ConnectUsingTcp( host, port ); ConnectUsingTcp( host ); ConnectUsingTcp; The addition of these methods makes it possible to establish a connection to a dispatcher that is shared by all instances of T|CodeSiteLogger. It should also be noted that the ConnectUsingTcp methods allow a direct connection to be established to a remote CodeSite Dispatcher. * The T|CodeSiteLogger class also defines several methods that can be used to override the default connection used when connecting to the CodeSite Dispatcher. The default connection is established by the CodeSiteManager. The new methods are: ConnectUsingCopyData; ConnectUsingTcp( host, port ); ConnectUsingTcp( host ); ConnectUsingTcp; UseCodeSiteManagerConnection; * The packages that contain the CodeSite Logging classes for VCL and VCL.NET development have been renamed in a manner similar to the convention used in the recent release of Raize Components. The primary benefit of this is that the version number of the product and the version number of the VCL have been removed from the names. The result is that when a new version of CodeSite is released, you will no longer be required to modify the source code of your dependent packages. * CS4 includes the new CodeSiteDBTools unit in the VCL and VCL.NET logging interfaces. This unit includes 2 custom formatters and a component to aid in capturing database related information with CodeSite. In particular, the TCSDataSetFormatter is used to capture the field values for all records in a specified TDataSet and package them into a csmCustomTable message. The TCSDataSetRecordFormatter is used to capture the field values for the current record in a specified TDataSet and package them into a csmCustomProperties message. And finally, the TCodeSiteSqlMonitor component is a descendant of TSqlMonitor and automatically logs dbExpress messages and routes them to a specified TCodeSiteLogger instance. * The CodeSiteDBTools unit and dependent units are included in the new CodeSiteDBToolsVcl package so as to isolate the database dependent code from the non-data-aware logging classes. The VCL.NET equivalent is the Raize.CodeSiteDBTools.Vcl assembly. * In order to simplify the sending of the database related information above, the method by which objects are sent in CodeSite has been enhanced. In particular, it is no longer necessary to use the SendCustomData method when sending data that is to be formatted by a custom formatter. For example, give a TClientDataSet named, cdsCustomers, the entire dataset can be sent to CodeSite using the following statement: CodeSite.Send( csmDataSet, 'Customers', cdsCustomers ); The other primary benefit of this is that it is no longer necessary to create helper functions to send custom formatted data. And this also means that sending custom formatted data using different TCodeSiteLogger instances is as simple as sending any other type of information. * Several overloaded ExitMethodCollapse methods have been added to all logging interfaces. These methods match the various ExitMethod methods that are available except that when the exit method is received by the viewer, the method block is collapsed. Please note that this collapsing is not persistent into log files saved from the viewer. That is, when an ExitMethodCollapse message is processed by the viewer, it is translated to a normal ExitMethod message. * Added SendControls, SendComponents, and SendParents methods to the VCL and VCL.NET logging classes. Added SendControls and SendParents methods to the FCL.NET logging classes (FCL.NET does not have the concept of Owner). SendControls records all other controls (TControl in VCL or VCL.NET, System.Windows.Forms.Control in FCL.NET) that are contained within the specified control. SendComponents records all TComponent instances owned by the specified component. SendParents is the opposite of SendControls in that it records the parent hierarchy for the specified control. * Added a new csmCustomHierarchy message type. This message type allows a user to record hierarchical data (such as the Controls hierarchy--above) and send it to CodeSite. The viewer displays the hierarchy details of the message in a tree view in the inspector pane. * The custom formatting classes have been enhanced to support the new hierarchy capabilities. The CodeSiteInspectorType enumerations has been extended to include itStockHierarchy. Recording hierarchical data in an inspector is accomplished by simply prefixing the line representing the node by tab characters. Each tab represents a level deeper in the tree. * Added several new methods to logging classes to enable developers to quickly write entries into the NT Event Log (on systems that support the NT Event Log). The new methods are LogEvent, LogWarning, and LogError. Each method takes a message string to write to the Event Log. Optionally, an application- specific event ID and category number may also be specified. The category in the NT Event Log is numeric based (as a resource string identifier) and does not map to the Category property of CodeSite logging classes. The source name recorded into the Event Log is the Application Name concatenated with the CodeSite object's Category property (if not empty). In addition, CodeSite provides a CSEventLogMessages.dll resource library which allows the Event Viewer to display your event log messages without warnings of missing resource message strings. * Added SendScreenShot method to FCL.NET logging interface. * Added support for sending TWideStrings lists for VCL (Win32) logging classes. * Added support for Int64 properties when sending objects in VCL. * Fixed problem where sending objects with empty character properties would result in a Unicode error being reported by the Dispatcher. * Fixed problem where Tcp and Udp properties of T|CodeSiteDestination were not getting cleared correctly. * Surfaced SendMsgDetails method in CodeSite class in the FCL.NET logging class. * Configuration file support in FCL.NET has been redesigned in CS4 to be easier to maintain and to handle changes made in .NET 2.0. * Added new EncodeNonvisibleCharacters property to the CodeSiteManager. When this property is set to True, any nonvisible characters in the message string are encoded so that they are visible. This is useful when strings contain embedded tabs, carriage returns, newlines, etc. * Added a new SendException method. The new overload accepts a message string along with an exception object. * Added several overloaded SendIf methods. Each method takes a Boolean expression as its first parameter. The specified CodeSite message is only sent if the specified expression is True. The various SendIf overload wrap most of the overloaded Send methods. Likewise, in the VCL interface, there is also a SendDateTimeIf method that wraps SendDateTime. * The CodeSiteManager in FCL.NET now handles removing the ".vshost" suffix that is added to the application name when running an application directly from the Visual Studio IDE. CODESITE LIVE VIEWER/FILE VIEWER * To more accurately describe their roles, the CodeSite Viewer has been renamed the CodeSite Live Viewer, and the CodeSite Log Viewer has been renamed the CodeSite File Viewer. * The performance of the Live Viewer has been dramatically improved in this version. This improvement is especially noticeable when the Viewer is receiving a large number of messages in a very short time (e.g. 1000s messages per second). With AutoScroll turned on, the CS4 Viewer is 200% faster than the CS3 Viewer. With AutoScroll turned off, the CS4 Viewer is 300% faster than the CS3 Viewer. * Added ability to shade alternate rows in the message list. The shading is accomplished by alpha blending the shading color with the background color of each alternate row. This option makes it much easier to identify message details associated with a particular message. * Added a new Hide Extra Columns command (via menu and toolbar). When invoked, any extra detail columns (e.g. Category, Date, Time) are hidden from view. Toggle the option to restore the selected columns. * Added a new File|Append command (via menu and toolbar). When invoked, the user selects a CodeSite Log File to be appended to the end of the message list. This command is especially useful for analyzing multiple parts of a log file set. * The stock string inspector now supports word wrapping and displaying line numbers. In additional, several other inspectors inherit the word wrapping and line number display functionality. * The Object Inspector now supports collapsible nested properties. * The Object Inspector also displays hints for items are not fully visible. * The Collection Inspector has also been updated to utilize the new object inspector for item properties. * The Collection Inspector now responds to changes in its size so that the items list and the item property grid are oriented left-right or top-bottom depending on the size of the inspector area. This is immediately noticeable when the inspector pane is position at the bottom of the viewer. * The old "marker" feature has been replaced with numbered bookmarks. The new bookmarks work the same way as they do in the Borland IDEs. Ten bookmarks are supported (0-9). Setting a bookmark can be done by pressing Ctrl+Shift+N when N is a digit 0-9. Jumping to a bookmark is done by pressing Ctrl+N. Bookmarks can also be set and jumped to by using the menu and toolbar. * The filtering capabilities have been enhanced to allow filtering on sub-strings of the message text portion of a CodeSite message. * The New/Modify View dialog box now has an Auto Name option. When this option is set, the name of the view is automatically generated from the filter criteria specified by the user. * Added the ability to hide all indenting in the message structure. This can be very useful in situations where a matching csmExitMethod message is not logged, which can happen if the developer forgets to add one, or if an exception causes the method to exit unexpectedly. Instead of running off to the right of the display, when this option is active, all messages start at the leftmost position. * The Table Data Inspector now automatically sizes the columns of the table to show all of the data in the column. * Added the ability to quickly resize the Inspector Pane such that it occupies the entire client area of the Viewer. This mode is toggled using a button on the main toolbar or by the Ctrl+F11 hot key. When active, all other panes including the message list are hidden and the Inspector Pane occupies the entire window. This is useful when the details of a message are large or excessively long (e.g. bitmaps, dataset tables). * The Viewer no longer appears to hang when trying to inspect a really long text string. Really long in this context means greater than 250,000 characters. * Search processing in the viewer has been enhanced. Backward searching is now operational as well as searching into collapsed method blocks (both forwards and backwards). * The Copy Inspector Contents command now looks at the selection in the inspector. When text is selected, only the selected text is copied to the clipboard. If no text is selected, then the entire contents of the inspector are copied to the clipboard. * Added the ability to print the contents of the inspector pane. Simply invoke the Inspector Pane context menu and select the Print Inspector Contents menu item. Printing from all stock inspector types is supported including string lists, property grids, tables, and bitmaps. * In addition to the specific inspector enhancements described above, the overall layout of the inspector pane has been redesigned. A new toolbar has been added to the top of the pane providing quick access to the various command available such as copying, printing, and inspector pane positioning in addition to any inspector specific commands. Also on the toolbar is an icon indicating the type of message being inspected. * When clearing one or all views, the message detail panel is also cleared. * In order to handle the new csmCustomHierarchy message type, a new Stock Hierarchy inspector has been added. * Added a new Synchronize Message Mode. When this mode is activated, the currently focused message in the current view is highlighted and recorded. When switching views, the new view is synchronized to this highlighted message. If the highlighted message is not included in the new view, the closest message in that view is selected. * The views tab control now displays a menu button and close button when more than one view is visible. The menu button and close buttons are part of the new TRzTabControl in Raize Components. * When a method is collapsed, the number of messages within the EnterMethod and ExitMethod are displayed in brackets after the method name. * The XML Inspector has been replaced with the new XML Structure Inspector. The previous custom inspector utilized Internet Explorer's web browser to display XML data, which provided syntax highlighting. The new XML Structure Inspector has no dependency on Internet Explorer and is designed to display the structure of the XML as well as its contents. The structure is displayed in a tree view and when a tag node is selected, any parameters associated with the tag are displayed in a name-value grid. * Added a new Compare Custom Properties Inspector. When two csmCustomProperty messages are selected, the property values are compared as in the Compare Objects inspector (formerly the Object Differencing Inspector). The Compare Custom Properties Inspector will work for all custom formatted data using the csmCustomProperties message type including dataset records. * Added a new Compare Memory Status Inspector. This inspector is used when you select two Memory Status messages, or two Heap Status messages. Rather than show both values that do not match like the Compare Objects Inspector does, the change in the status value is display. A positive change is displayed in green, while a negative change is displayed in red. * Custom Inspector plug-ins need to be rebuilt with BDS 2006 since the Viewer/Log Viewer is now being built with BDS 2006. In addition, the interface package name has changed from CS30Inspectors70.dcp to CodeSiteInspectors.dcp. * Clipboard support has been added to the new custom inspectors listed above. That is, it is now possible to copy the contents of the custom inspector pane to the clipboard. * The scratch pad area has two new toolbar buttons on the right side that provide quick access to clearing the scratch pad and for deleting items from the scratch pad. * Fixed problem that caused Range Check Error when printing an empty message. * Fixed the problem that caused underscore characters "_" not to appear correctly when the message list was printed. * Added a new Crop To Selection menu item under the Edit menu. When invoked, all unselected items are deleted so that the only items remaining are the ones that were selected. * The Methods menu and the message list context menu now have a Collapse All command. When invoked, all method blocks in the current view are collapsed. * The File Viewer (formerly Log Viewer) has a new Refresh menu item under the View menu. This command instructs the File Viewer to re-load the currently selected log file. This is useful if the log file is still getting CodeSite messages stored into it. * Fixed a problem that would occasionally prevent messages from being routed to their correct view when first received by the viewer. * The overall user interface for the Viewer has been updated to a more modern look and feel courtesy of the new capabilities of Raize Components. CODESITE DISPATCHER * The CodeSite Dispatcher and CodeSite Controller can now be executed from a Limited User account. The limited user will not be able to modify the settings used by the Dispatcher, this will require Administrator rights, but the Dispatcher will execute and dispatch CodeSite messages as needed. * The CodeSite Dispatcher log file (CSDispatcher.csl) is now stored in the current user's Documents and Settings path. Specifically, C:\Documents and Settings\\Local Settings\Application Data\Raize\CodeSite\4.0 This change was needed because by default limited users do not have write access to the All Users branch of Documents and Settings. * For systems that support the NT Event Log, the CodeSite Dispatcher log is also recorded in the NT Event Log in the Application section. * The information captured in the CodeSite Dispatcher log has been redesigned to provide much clearer information regarding the state of the dispatcher. * Fixed issue when generating more than 100 parts for a log file set. * Modified the Indy code used to stream data sent using the HTTP protocol. Changes made in Indy 10 caused problems in the way CodeSite HTTP Destinations were handled. * It is no longer required to specify the Alias option when using the HTTP destination type. If no alias is specified, the "Default" alias is implied and will be used when the web module looks up the appropriate TCP settings. * Fixed problem where certain message blocking/forwarding settings were not being honored by the Dispatcher. * When running as a service, the CodeSite Dispatcher can now be run under a different user account from LocalSystem. However, the default remains LocalSystem, and if you wish to have your messages sent to the Viewer, then you must use the default "LocalSystem" account, and the "Allow service to interact with the desktop" option must be checked. Please note that this is only required for sending messages to the CodeSite Live Viewer directly. If you wish to send your messages to a log file, then the Dispatcher can be logged on as another user and does NOT need to interace with the Desktop. The only requirement in this case is that your T|CodeSiteLogger instances must connect to the Dispatcher service using TCP. Use the ConnectUsingTcp method on the CodeSiteManager, or on individual T|CodeSiteLogger instances to setup a TCP connection. * Renamed CS3CGI.exe to CSCgiDispatcher.exe. * Renamed CS3ISAPI.dll to CSIsapiDispatcher.exe. CODESITE CONTROLLER * Redesigned the communication mechanism used for determining the status of the CodeSite Dispatcher. The CodeSite Controller now correctly detects the running state of the Dispatcher regardless of whether it is running as a normal application or as a service. In the case of running the Dispatcher as a service, the CodeSite Controller now correctly indicates when the service is logged on as a different user. CODESITE HELP SYSTEM * The CodeSite help system has been completely redesigned in this version. In CS3, CodeSite help was dispersed among several different help files and systems. This was necessary to accommodate installing help directly into the various IDEs that are supported. Unfortunately, the separation of information made it difficult to find information. For CodeSite 4, a single help system (based on HtmlHelp) has been created that includes all CodeSite-related information in a single location. Although the new system does result in the elimination of direct help from within an IDE, the new system does allow developers to find the information they need much faster, and eliminates the need to support multiple versions of the same documentation. CODESITE METHOD TRACER FOR DELPHI * The Method Tracer now correctly identifies nested methods. Nested methods appear in the tree with the parent method name prefixed to the nested method. As a result, all nested methods appear directly below the parent method. * The Method Tracer now correctly identifies methods in ASP.NET source modules. * Added two new formatting options to the Method Tracer. The first is the ability to add a blank line after the EnterMethod statement and a blank line before the ExitMethod statement in a traced method. The second option determines whether or not spaces are inserted around the parameter list for the EnterMethod and ExitMethod calls. Both settings are persisted between sessions. CODESITE TOOLS INSTALL * The CodeSite Client Tools have been renamed to simply the CodeSite Tools. * The CodeSite Tools include: the CodeSite Dispatcher, the CodeSite Controller, the CodeSite File Viewer, and the CodeSite Live Viewer. Yes, the CodeSite Live Viewer can now be freely redistributed with your applications. * Customizing the options that are installed via the CodeSiteToolsSetup.txt file are now correctly recognized. --------------------------------------------------------------------------------