IDE Fix Pack is a collection of unofficial bug fixes and performance optimizations for the RAD Studio IDE, Win32/64 compiler and Win32 debugger. All patching is done in memory so that no file on disk is changed.
IDE Fix Pack 5.3 comes with many new patches for IDE bugs and compiler performance bottle necks.
New bug fixes:
The IDE sometimes disables the editor’s undo system to do some text extractions. In combination with a disabled “Keep trailing blanks” and/or an active “Optimal fill” this could cause the undo system to become out of sync with the editor content. IDE Fix Pack turns on/off those options when undo is temporarily disabled so that no unexpected automatic editor buffer changes happen. Especially Delphi 2009 is affected by this, newer versions fixed (almost?) all of these gaps.
(QC 105642) Another editor bug fix is that if you have a disabled “Keep trailing blanks” and you selected some forced blanks after the line end you got garbage bytes copied into the clipboard if you pressed Ctrl+C.
(QC 105668) Starting with XE3 the last line of a multi-line comment wasn’t repainted if you added or removed the comment’s begin token.
(QC 116373) The Designer guidelines in XE4 were spanning to the IDE’s main form instead of the (embedded) designer form. IDE Fix Pack reverts this back to XE3’s behavior.
(QC 116290) When Unit Scopes were introduced in XE2 the Code Completion wasn’t updated properly. It failed to find WM* message handlers when invoked in a TWinControl derived class if you had “Messages” instead of “WinApi.Messages” in the uses list.
(QC 115248) The Debugger leaked memory during a debug session if you had items in the Watch or Local variables list. Especially if those were types that required large chunks of memory. The memory was released after the debugged process was terminated but it could lead to an out of memory error if you had a long debug session. And it made stepping slower and slower with every step.
(QC 116008) If you had ErrorInsight active and you just compiled a project and pressed F9 (run) the project was compiled again before starting the application. This was due to the fact that ErrorInsight uses the exact same compiler instance that the compile dialog uses to compile the project. And the moment ErrorInsight started parsing the code, it set a “modified after compile” flag what caused the recompile. IDE Fix Pack prohibits that flag if the compiler doesn’t do a real compile (because the units are already compiled and didn’t change).
(QC 111500) The debugger truncated the project’s command line parameters after 1024 chars. This was caused by the usage of wsprintfA() that only supports 1024 chars.
The IDE used the old Windows XP directory select dialog that is now replaced by the Windows Vista FileOpenDialog in folder mode if the operating system is Windows Vista or newer.
The directory selection dialogs in the IDE Options and the Project Options dialogs didn’t recognize the $(Platform) and $(Config) macros and if you pressed the “Delete invalid paths” button, important directories were gone. With this patch these macros are context dependent available. If you switch the “Platform” ComboBox in the global IDE option dialog, the $(Platform) macro will be resolve to that platform. The same goes for the Project Options dialog which also resolves the $(Config) macro to the selection in the “Configuration” ComboBox.
New performance optimizations:
Opening forms that do not use LiveBindings but contain many components (e.g. TField) were slowed down by the LiveBindings packages. The patched code turned the 10 seconds from the sample project into less than 1 second.
The TStream.WriteBuffer/ReadBuffer changes that were done in XE3 to harm performance (unnecessarily copying buffer to another buffer) are undone by IDE Fix Pack for the IDE process to get the DFM streaming performance for the IDE and the linker back to normal.
RAD Studio 2009-XE2’s Pos function wasn’t the fastest. It is replaces with a faster version what should get the IDE some slight performance improvements.
The compiler performance (Win32/Win64) for code that heavily uses Generics will be a lot faster.
The XE3 Win64 compiler has a memory leak that was fixed by XE4, but for those that are still on XE3 this bug is now fixed what also makes the compilation a lot faster.
The C++ Win32 Compiler compiler got some slight performance optimization for string comparisons.
Help Insight in XE and XE2 did some unnecessary slow COM round trips between the IDE and the .NET parser code. This issue was fixed by XE3 and now it is also fixed for XE and XE2.
Downloads
Changelog
- Added: Fix for not disappearing Designer Guidelines
- Added: Editor Buffer now always disables the automatic/implicit changes to the buffer if undo is disabled. Undo buffer stays in sync with editor buffer (especially in Delphi 2009)
- Added: Fix for QC 105642: Ctrl+C causes premature line cut and garbage in the clipboard
- Added: Fix for QC 105668: Last line of the multi-line comment is not repainted (XE3-XE4)
- Added: Fix for QC 116373: VCL Designer Guidelines spanning to the IDE’s main form instead of the designer form. Revert to X3 behavior. (XE4)
- Added: Fix for QC 116290: Code Completion in class declaration doesn’t find message handlers if Messages is not included by using WinApi.Messages (XE2-XE4)
- Added: Some slight C++Builder Kibitz/Compiler performance optimization
- Added: Faster Unicode Pos function (2009-XE2)
- Added: XP SelectDirectory dialog replaced by Vista version if available
- Added: Fix for QC 116169: Slow opening forms in IDE that don’t use LiveBindings (XE3-XE4)
- Added: Fix for QC 115248: Huge memory leak in BDS.EXE with large local variables or watches (XE-XE4)
- Added: Performance optimization for IOTAxxxx.AddNotifier where Add/RemoveNotifier is called for many items
- Added: Fix for QC 116008: IDE always does the compile->link cycle even if there where no modifications made to the project
- Added: Directory selection dialogs in IDE Options and Project Options use the $(Platform) and $(Config) from the option dialog (XE2-XE4)
- Added: TStream.WriteBuffer/ReadBuffer performance optimization (DFM streaming) (XE3-XE4)
- Added: Memory leak fix for Win64 compiler (XE3)
- Added: Compiler performance optimization for many Generics (XE-XE4)
- Added: HelpInsight performance optimization (XE/XE2)
- Added: HelpInsight background WaitFor bugfix
- Added: Fix for QC 111500: Debugger truncates command line
- Rewritten: Linker I/O buffer memory handling
- Improved: comp32x.dll isn’t loaded at IDE startup anymore (XE-XE4)
- Improved: IDEFixPackReg*.exe supports command line parameters (see “IDEFixPackReg*.exe /?”)