GExperts 1.32 Open Source Programming Tools for Delphi and C++Builder Source code, the FAQ, and the latest news are available at: http://www.gexperts.org/ Please send bug reports and comments using the feedback wizard available in the GExperts about box. You may send other GExperts related queries to the project leader at: Erik Berry or INTRODUCTION ---------------------- GExperts is a set of tools built to increase the productivity of Delphi and C++Builder programmers by adding several features to the IDE. GExperts is developed as Open Source software and is contributed as freeware to the development community. Users are encouraged to download the source code and submit bug fixes and patches as well as new features for inclusion in the GExperts distribution. THE EXPERTS ---------------------- GExperts contains numerous experts. See the online help (GExperts.chm) for information on the usage of the experts. KNOWN LIMITATIONS/BUGS ----------------------------------------------- - The following features are not supported under Delphi 8/2005/2006/2007: UNICODE format text files, inner classes, class helpers, and generics in the Class Browser, and some of the old editor tab enhancements, such as multiline editor tabs. Note that the IDE converts some high ANSI and MBCS characters to UTF-8 UNICODE when loaded in the code editor, so you may experience problems searching for or viewing those characters. Those IDEs also no longer have a tabbed component palette, so those options are no longer supported, as well. - The compiler replacement option of the Code Proofreader is only partially working under Delphi 7-2005. It does not correct when a symbol is terminated by a '.' character (IDE limitation). It does not work at all in BDS 2006 or later (IDE bug). - You should turn off the "Ignore Comments" Grep Search option to perform a search and replace on the results (GExperts limitation). - Due to either native Open Tools API limitations or bugs, the following items can not be supported under Delphi 8/2005/2006/2007: Delphi 8 Only: - Rename Components (IDE bug setting the Name property) - Jumping to a form search match from Grep Results when the source is open (IDE bug) Delphi 2005 Only: - The Project Option Sets environment options (IDE bug) - Set Tab Order: Selecting components in the desired tab order (IDE bug) Delphi 8, 2005, 2006, and 2007: - Any interaction at all with the WinForms/.NET form designer/components (no WinForms support for IOTAFormEditor/IOTAComponent) - Replace Components for VCL.NET (No direct access to components) - Components to Code for VCL.NET (No direct access to components) - It is no longer possible for addins to override some built-in IDE shortcuts. You may need to configure your GExperts shortcuts (Prev/Next Identifier, etc.) to not conflict with your selected keymapping. Also, the Macro Library can not always intercept the Shift+Ctrl+R keystroke to automatically grab keyboard macros, so you will need to create macros using the record functionality on the toolbar. INSTALLATION ---------------------- GExperts is distributed as a self-installing executable that should automatically install itself into the IDE. If you are installing under Vista as a non-administrator, you may need to manually register the GExperts DLL with the IDE after installation. This is most easily done using the Expert Manager tool in the GExperts start menu group. If you prefer, you can also manually register the DLL with the IDE using the Windows registry editor (RegEdit.exe). Create the following key (the value for X is IDE dependent - Delphi 2007 uses 5.0, for example): HKEY_CURRENT_USER\Software\Borland\BDS\X.0\Experts\ or HKEY_CURRENT_USER\Software\Borland\Delphi\X.0\Experts\ Then add a new string value that points to your GExperts DLL (X is the IDE version such as 6, 7, 8, 2005, 2006, 2007, etc.): GExperts=C:\Program Files\GExperts\GExpertsDelphiX.dll GExperts=C:\Program Files\GExperts\GExpertsBDSX.dll or GExperts=C:\Program Files\GExperts\GExpertsDX.dll or Before installing GExperts, it is strongly recommended that you install the latest updates and patches for your IDE available from: http://www.codegear.com/ UNINSTALLATION ---------------------- Uninstallation of GExperts can be done from the Control Panel's Add/Remove Programs or Programs [and Features] tool under Vista. CHANGE LOG ---------------------- VERSION 1.32 (September 11, 2007) - General: Added support for RAD Studio 2007 GExperts data files are saved under the user's Application Data\GExperts directory by default for new installs, to better support Windows Vista user restrictions. To change this location manually, go to GExperts, Configuration, File Locations. - Grep: Allow searching of the active form's text while the editor is active - To Do List: Allow scanning .inc files in searched directories for to do items VERSION 1.31 (April 7, 2007) - General: Added support for Delphi 2007 Fixed a possible shutdown exception when unloading GExperts Help switched to HTML Help format (.chm) for better Vista support Improve the font rendering on several forms - IDE Enhancements: Added a new option to allow resizing and enhancing some IDE dialogs (for BDS 2006 or later). See the help file for full details. VERSION 1.30 (October 26, 2006) - General: Added support for Delphi 2006. Better syntax highlighting support for C#, HTML, and XML (Erik). Better ClearType support in several forms. - Open File: New tool to quickly search for and open files in the project, search path, recent files, favorite files, etc. The file groups are configurable and the tool can override the IDE's internal open project/form/unit dialogs. (Paul Gardner, Erik) - Replace Components: Comprehensive new system to map properties between component classes and map constants to properties for replacement components. Import/export of mapping sets via XML. Interactive and file-based logging of replacement results. Smarter preservation of properties such as TStrings, TWideStrings, TFields, component references, etc. (Oasis Digital Solutions, Piotr Likus, Erik). - Rename Components: Allows interactively renaming components after they are placed on the form (Leonel Togniolli). Added ability to edit a configurable list of component properties (Caption, Text, etc.) in addition to the Name for each component class and supply default values for most new component properties. (Thomas Mueller, Erik). - Macro Templates: Optional expansion of templates when pressing space. Ability to embed the selection intelligently inside a construct such as try/finally using the %SELECTION% macro. New macros such as %BEGINPARAMLIST%, %PARAMNAME%, %PARAMTYPE%, etc. to format individual parameters one per line. New default templates for XML method documentation, begin/end completion, for/while loops, etc. (Piotr Likus, Erik) - Macro Library: Allows record and playback of saved editor keystroke macros (John Hansen, Erik) - Find Component Reference: Allows quickly jumping from a component to the first usage in your source, or from a component name in the source to the component on the form. (Kristofer Skaug, Leonel Togniolli, Erik) - Set Component Properties: New tool to set properties (Boolean, string, set, enum, ordinal, etc.) to some value when the a project is compiled. Useful to deactivate datasets/connections, etc. (Robert Wachtel, Gami, Erik) - Editor Experts: New alignment tool to horizontally align variable declarations, comments, assignments, etc. (Stefan Pettersson, Erik) - Editor Enhancements: Re-enabled for Delphi 8/2005, including the editor toolbar, etc (Rick Hollerich, Erik). Middle mouse button close support for the editor tabs in Delphi 6/7 (Gami). Note that the various editor tab options can not be supported in the newer IDEs. - Procedure List: Option to view the selected procedure's source code (Paul Gardner, Erik). Optionally search in the class name. (Primoz) Support for scanning Delphi .inc files and upgraded C++ support. - Code Proofreader: Added basic C# support (Erik) - Component Grid: Allow editing the Hint property for components (Erik) - IDE Enhancements: Changing the multiline component tabs setting in Delphi 6/7 no longer requires a restart (Erik) VERSION 1.22 (January, 2005) - General: Work around new Delphi 2005 Update 1 bug causing various "Interface not supported" errors for Grep Search, Message Dialog, etc. - Procedure List: Fix parsing of non-compiling C++ code to avoid infinite loops - Rename Components: Works for both string/widestring name properties - Code Proofreader: Prevent Delphi 7/2005 from popping up a dialog stating "Unable to invoke Code Completion due to errors in source code" with unknown identifiers present. - Clipboard History: Speed up save/load of clipboard history items with a stored maximum of 100, fix copying/deleting of individual saved items. VERSION 1.21 (November, 2004) - General: Added basic support for Delphi 2005 - Macro Templates: Improve saving macros with trailing CRLF characters - Editor Experts: Improve handling of UNIX-style line endings Fix parsing of empty strings and strings with embedded quotes - Backup Project: Fix finding files to backup on the IDE library path - Components to Code: Support exporting whole forms at once - Component Grid: Add support for variant Tag properties - Grep Search: Fix searches of root directories of disk drives VERSION 1.20 (August, 2004) - General: Several of the tools now save their data to XML files using OmniXML (http://omnixml.com/), update to SynEdit 1.2+ for syntax highlighting, new shared toolbar/button bitmaps throughout GExperts, Components to Code and Copy Component Names are available from the form designer menu, lots of internal changes to improve code clarity and safety. - Delphi 8: Preliminary Delphi 8 support is included. It is largely untested and has several limitations as documented in the "KNOWN LIMITATIONS/BUGS" section. This includes basic support for some Delphi 8 syntax elements such as operator, static, strict, dotted class names, nested classes, and .nfm form files. - Macro Templates: New editor expert that allows you to define an unlimited number of templates to insert into the editor, similar to the IDE's code templates, but with support for lots of replaceable macros, like %PROJECTNAME% (Piotr Likus, Erik). - Rename Components - Define component renaming rules that execute when components are added to a form. The rules can be completely automatic, or allow the user to override the new name (Achim Kalwa, Erik). - Copy Component Names - New tool to copy the form designer's selected component names to the clipboard (Alexander Golovko) - Clipboard History: Saves the clipboard text items to an XML file. - Grep Search: New configuration option to make the default search string the identifier under the edit cursor, allow skipping comments in Delphi/C++ source files (Benjamin Fournier), multi-file search and replace inside the grep results (Jim Campbell, Erik) - Grep Results: New view option to hide the toolbar, show path names relative to the search root, new options dialog (Peter Nagel, Erik) - Class Browser: Allows searching by a partial class name - Code Librarian: Always sort folders before code snippets. Stores the code snippets using a custom structured storage library written by Primož Gabrijelcic to remove the database dependencies (Erik). - Backup Project: Include h/bpr/dof/todo files when backing up a project, C++ support to add files using "#pragma backup FileSpec" (Benjamin Fournier), support quoted names and relative paths when using #backup. Abbrevia is now the library we use to create .zip files. - Macros: Many new substitution macros: %VERFILEVERSION%, %VERPRODUCTVERSION%, %VERMAJOR%, %VERMINOR%, %VERRELEASE%, %VERBUILD%, %SELECTION%, %CLIPBOARD%, %USER%, %BEFORE%, %INTERFACE%, %IDENT%, %INPUTVAR%, etc. See the help file for more details. - Project Option Sets: New tabbed GUI that is easier to use when docked and conversion to an XML storage format (John Hansen) - Editor Experts: Removed procedure/unit header experts, since the macro templates editor expert provides all of their functionality, New editor expert to reverse all assignment statements and for loops in a selected block of code (help from Per-Eric Larsson, Ulrich Gerhardt), Support for matching delimiters in C++ code and matching from ending to beginning delimiters (Benjamin Fournier), Added Delphi delimiter matching support for with, while, then, do, if, else, for, class, record, array, interface, implementation, uses, private, protected, public, and published (Erik), New editor expert to change the selection case (Thomas Due, Erik), New editor expert to select the current identifier. - Uses Clause Manager: New editor expert to add and remove items from uses clauses. It allows incremental search to add a unit from the library path, project, etc. (Erik, Per-Eric Larsson, and Eyal Post) - Procedure List: C++ Nested procedure/namespace/.h support and other C++ parsing improvements (John Hansen, Erik) - Components to Code: Added C++ support (Benjamin Fournier) - To Do List: Added C++ support (Benjamin Fournier) - Code Proofreader: Basic support for compiler-assisted correction under Delphi 7+. It does not work when a symbol is terminated with a '.'. Saves the configuration data to CodeProofreader.xml instead of a TClientDataSet .cds file (Ulrich Gerhardt, Erik). - IDE Enhancements: Under Delphi 7+, the popup menu of tab names is now activated by a button to the right of the palette to work around the lack of menu columns/scrolling in the IDE context menu (Achim Kalwa). The GExperts main menu items now automatically arrange themselves in a submenu on low resolution screens to ensure all menu items are available. - Replace Components: New option to not use with statements when generating Delphi code (Benjamin Fournier) - Project Dependencies: Custom dependency filtering and the ability to export the dependency list (John Hansen, Erik) - Message Dialog: Added support for MessageBox dialogs, New options to embed the dialog call in a case statement, quote or not quote the message string, and copy the code to the clipboard (Paul Gardner, Erik) - Set Tab Order: Added the ability to estimate the best tab order for children of the selected parent component by comparing the Top/Left properties of the children. Changed the tab order display to be a drag and drop tree rather than a list. (Alessandro Storniolo) - Favorite Files: The data is now saved to an XML file called FavoriteFiles.xml (help from Ulrich Gerhardt). - Help File: Updated for 1.2 (Mike Gallaher, Erik) VERSION 1.12 (August, 2002) - General: Added support for Delphi 7 and C++Builder 6.01/6.02 - Remove RLE compressed bitmaps to satisfy buggy video drivers - Procedure List: Fix infinite loop parsing some C++ source files - Backup Project: Remove .bpg extension from %PROJECTGROUPNAME% macro - Grep: Never search the same file twice when searching project groups Highlighting a matched search term deals better with leading tabs Deal better with corrupt DFMs, and accidental grep of binary files Search the project file when searching all files in the project - Editor Experts: Header experts use C++ comments under BCB by default - Clean Directories: Added check/uncheck all and invert to popup menus - Editor Toolbar: Don't allow Close and Close All toolbar buttons, since they aren't stable - Replace Components: Support recreating TTabSheet components - Code Proofreader: Fixed an odd AV with lots of help from Eyal Post - Project Dependencies: Allow aborting a dependency scan VERSION 1.11 (February 19, 2002) - General: Fixed problems creating menu items in French IDE editions Added support for Delphi 6.02 and C++Builder 6 (largely untested) - Clipboard History: Options were not always saved - Grep Search: Treat '_' and numeric characters as part of a word when searching in "Whole word" matching mode - Code Proofreader: Allow the same dictionary word to be added to more than one correction language - PE Information: Detect more binary/subsystem/CPU types and report more detailed image/DLL characteristics - Priority Booster: Removed this expert since it wasn't working/useful VERSION 1.1 (January 23, 2002) - General: Conversion to use the new Open Tools API (ToolsAPI.pas) Underlying expert architecture completely redesigned (Stefan) Removed support for Delphi 3, 4 and C++Builder 3, 4 Added Delphi 6 and very limited Kylix support Added support for CLX/XFM forms in many experts Main configuration dialog is resizable All of the database experts use Client DataSets instead of the BDE under Delphi 6 Professional/Enterprise and Delphi 5 Enterprise Lots of minor UI changes, features, and bug fixes.... - To Do List: Support for scanning an entire project group and multiple (semicolon separated) directories - Grep Search: Support for scanning an entire project group and multiple (semicolon separated) directories - Grep Results: Support for showing the context around matched lines Jumping to a match selects the match in the editor (Rick Hollerich) Results can be exported to the clipboard or a file (Rick Hollerich) Multiple matches on a single line are consolidated (Rick Hollerich) New option to always expand matches when searching completes - Message Dialog: Optionally generates a supporting if statement Automatically adds [Q]Dialogs to the uses clause if it is not already present (from Krzysztof Jez) - Debug Window: UI cleanup, added "Hide Toolbar", "Stay on Top", "Pause", and remote clear capability (see DbugIntf.pas) - Code Librarian: Snippets can be stored in a TClientDataSet You must set the read-only attribute on the CodeDB.cds file to safely share it over a network - Code Proofreader: Configuration dialog is resizable Dictionary and Auto Correct entries can be stored in a TClientDataSet and can contain replacement/dictionary strings up to 75 characters - IDE Enhancements: The top-level GExperts menu item can optionally be placed in the Tools menu (Michael Beck) The Object Inspector can be configured to show font names in the drop-down list using each font's typeface - Editor Toolbar: More comprehensive set of possible toolbar buttons Toolbar bitmaps match those used by the IDE (Stefan) Toolbar buttons automatically enable/disable as necessary New button to show/open units used by the current unit (John Hansen) New button to jump to specific positions in a unit (John Hansen) - Editor Experts: New editor expert to sort the selected lines New editor experts to jump to the previous/next occurrence of the current identifier (from Max Vlasov) - Procedure List: Procedure extraction is about 4 times faster Added support for parsing C++ files (Ales Kahanek) - Clean Directories: The unit output and executable output directories can be included in the default list of cleanable directories - Backup Project: Searches both the IDE and project library paths looking for included files. Project parsing progress is reported. - Project Dependencies: Can open any unit found on the library path. - Feedback Wizard: The GExperts about box can bring up a wizard that makes it easy to send "useful" bug reports and other feedback. Please do not send feedback directly to the developers via email any longer. (Stig Jørgensen) - Help File: Updated to reflect the latest changes (James Roberts). VERSION 1.01 (May 19, 2001) - General: All known bugs are fixed - Clean Directories: Recursive deletion was not working under Delphi 3 - Clipboard History: Coexists with other clipboard history applications - Code Librarian: Fixed a possible AV when using "Contract All" - Replace Components: Works for data modules now - Grep Search: Disabled the "Ignore comments" option until it is fixed - PE Information: Allow clipboard copying of the "Exports" tab - Project Option Sets: Fixed option filtering/sorting problems VERSION 1.00 (February, 2001) - General: All of the experts except the Code Proofreader can be dynamically enabled and disabled from the configuration dialog. Modified docked window menus to only activate when the docked form contains the currently focused control. GExperts menu items can now be placed on the IDE's toolbar. Menu shortcuts are no longer lost when loading a project group. - Editor Experts: Fixed a possible range check error in the delimiter experts when the cursor was near the top of a unit. Comment and uncomment experts work around a common IDE AV. Procedure header has two new macros: %RESULT% and %ARGUMENTS%. - Perfect Layout: Improved the results when the Object Inspector is docked into the edit window. Loads data from the right registry key (Thomas Mueller). - Grep Results: Fixed some minor problems opening and setting focus to DFM files when jumping to a grep match. It still isn't perfect. Fixed a possible memory leak. - Replace Components: Works with modules outside the current project. - Editor Toolbar: Improved sizing and positioning with respect to docked windows. - Code Proofreader: The '|' character can be used in AutoCorrect entries to determine the cursor position after a correction. - Code Librarian: Double-clicking a code snippet node copies the text into the code editor and closes the Code Librarian. - To Do List: A cosmetic problem left the to do entry's displayed line number off by one. Now supports jumping to one of multiple to do entries with the exact same comment text. - Class Browser: Works better with method resolution clauses (method redirections), multiple interface inheritance, non-standard calling conventions, multiple variable declarations on a single line, property overrides, non-standard line endings, and is generally more accurate when jumping to or viewing the code for class members. - Favorite Files: Projects, project groups, and packages will by default try to close the current project before opening themselves. Splitter position is saved/restored correctly. The modified flag is set after editing the file list. - Project Option Sets: Fixed an issue preventing setting environment options that were comma delimited strings. - Backup Project: Reports files it is unable to find or open. - Help File: Updated to reflect the latest changes. FUTURE ENHANCEMENTS? ---------------------- - [Unassigned] Persistent editor bookmarks - [Unassigned] Integrate file auto-save code - [Unassigned] Add compile date to version information and sync FileVersion with ProductVersion - [Unassigned] Add GX_MessageBox warnings to the Pascal only experts when used under C++Builder - [Unassigned] Save/Restore of editor macros - [Unassigned] Replace SortGrid with a TListView and make the various TListViews sortable - [Unassigned] Integrate a full regular expression parser as a compile-time option to the grep search - [Unassigned] Allow adding some common editor and object inspector actions to the editor toolbar? - [Unassigned] Add support for hiding the toolbar on all dockable experts - [Unassigned] Modify To Do expert so that it can display Borland style to do items. The basic parsing code exists, but needs to be surfaced in the user interface. - [Unassigned] Add word wrapped printing to the To Do List, etc. MISCELLANEOUS NOTES ---------------------- - If a DFM is opened as text from the Grep Results (for example), you may experience an IDE bug where it forgets the value of the Text DFM flag on the form and converts it to a binary format. - The Code Proofreader can only perform corrections when the editor caret is directly after the word to correct following a change. As a result, pressing enter will not trigger corrections. - Changing the configured GExperts top-level menu item location requires an IDE restart before the new setting is active. - The editor toolbar does not support separators when aligned left/right. - If a DFM is opened as text, a subsequent Grep Search can not scan the DFM's associated source files. Delphi does not provide access to the source file buffer. Under C++Builder you might also see duplicated matches for the DFM file when it is being viewed as text. - Perfect Layout was designed for Delphi 3, and as such will probably never support docking or undocking of windows in later version IDEs. Please use the desktop saving feature of your IDE instead. - Nothing in GExperts is aware of or takes into account conditional defines, so code that is defined out will still be parsed by GExperts. - Source Export only supports background colors when exporting to HTML. THANKS ---------------------- Vincent Parrett donated a copy of FinalBuilder 5 http://www.atozedsoftware.com/ AutomatedQA donated copies of AQTime and TestComplete http://www.automatedqa.com/ Alexander Halser donated a copy of Help and Manual 3 http://www.helpandmanual.com/ GEXPERTS LICENSE ---------------------- GExperts is copyright 1996-2007 by GExperts, Inc, Erik Berry, and several other authors who have submitted their code for inclusion. This license agreement only covers code written by GExperts, Inc. and Erik Berry. You should contact the other authors concerning their respective copyrights and conditions. The rules governing the use of GExperts and the GExperts source code are derived from the official Open Source Definition, available at http://www.opensource.org/. The conditions and limitations are as follows: Usage of GExperts binary distributions is permitted for all developers. You may not use the GExperts source code to develop proprietary or commercial products including plugins or libraries for those products. You may use the GExperts source code in an Open Source project, under the terms listed below. You may not use the GExperts source code to create and distribute custom versions of GExperts under the "GExperts" name. If you do modify and distribute custom versions of GExperts, the binary distribution must be named differently and clearly marked so users can tell they are not using the official GExperts distribution. A visible and unmodified version of this license must appear in any modified distribution of GExperts. Custom distributions of GExperts must include all of the custom changes as a patch file that can be applied to the original source code. This restriction is in place to protect the integrity of the original author's source code. No support for modified versions of GExperts will be provided by the original authors or on the GExperts mailing lists. All works derived from GExperts must be distributed under a license compatible with this license and the official Open Source Definition, which can be obtained from http://www.opensource.org/. Please note that GExperts, Inc. and the other contributing authors hereby state that this package is provided "as is" and without any express or implied warranties, including, but not without limitation, the implied warranties of merchantability and fitness for a particular purpose. In other words, we accept no liability for any damage that may result from using GExperts or programs that use the GExperts source code. If you have license questions, please email Erik Berry at eberry@gexperts.org. EOF