IDE Fix Pack 6.4.4 Hotfix for Delphi 10.3.2

By | July 31, 2019

There was a bug in IDE Fix Pack 6.4.3 for Delphi 10.3.2 that caused the Win32 compiler to crash. The CodeGenMod.Win32.VirtFinalSealed patch didn’t work correctly. Even if the actual patch code doesn’t run without the “-x-fvs=1” compiler command line option extension specified, the hooking code failed to inject the correct code for the compiler’s version. Only Delphi 10.3.2 was affected by this bug.

Download:

Name IDE Version File Size Downloads Added
IDE Fix Pack 6.4.2 2009 (UP4)IDEFixPack2009Reg64.2.7z242.75 KB1185 times2019-03-23
IDE Fix Pack 6.4.2 2010 (UP5)IDEFixPack2010Reg64.2.7z237.09 KB1431 times2019-03-23
IDE Fix Pack 6.4.2 XE (UP1)IDEFixPackXEReg64.2.7z221.38 KB691 times2019-03-23
IDE Fix Pack 6.4.2 XE2 (UP4+HF1)IDEFixPackXE2Reg64.2.7z316.78 KB765 times2019-03-23
IDE Fix Pack 6.4.2 XE3 (UP2)IDEFixPackXE3Reg64.2.7z257.4 KB587 times2019-03-23
IDE Fix Pack 6.4.2 XE4 (UP1)IDEFixPackXE4Reg64.2.7z260.1 KB442 times2019-03-23
IDE Fix Pack 6.4.2 XE5 (UP2)IDEFixPackXE5Reg64.2.7z257.7 KB548 times2019-03-23
IDE Fix Pack 6.4.2 XE6 (UP1)IDEFixPackXE6Reg64.2.7z423 KB477 times2019-03-23
IDE Fix Pack 6.4.2 XE7 (UP1)IDEFixPackXE7Reg64.2.7z429.48 KB707 times2019-03-23
IDE Fix Pack 6.4.2 XE8 (UP1)IDEFixPackXE8Reg64.2.7z431.7 KB599 times2019-03-23
IDE Fix Pack 6.4.2 10 Seattle (RTM/UP1)IDEFixPackD10Reg64.2.7z428.33 KB1087 times2019-03-23
IDE Fix Pack 6.4.2 10.1 BerlinIDEFixPackD101Reg64.2.7z430.65 KB1280 times2019-03-23
IDE Fix Pack 6.4.2 10.2 (RTM/UP1/2/3)IDEFixPackD102Reg64.2.7z426.27 KB2643 times2019-03-23
IDE Fix Pack 6.4.4 10.3 (RTM/UP1/2)IDEFixPackD103Reg64.4.7z444.98 KB3424 times2019-08-01

Download (fastdcc for the command line compiler):

Name IDE Version File Size Downloads Added
fastdcc 6.4.2 2009 (UP4)fastdcc2009v64.2.7z112.87 KB412 times2019-03-23
fastdcc 6.4.2 2010 (UP5)fastdcc2010v64.2.7z120.38 KB423 times2019-03-23
fastdcc 6.4.2 XE (UP1)fastdccXEv64.2.7z121.36 KB343 times2019-03-23
fastdcc 6.4.2 XE2 (UP4+HF1)fastdccXE2v64.2.7z166.48 KB343 times2019-03-23
fastdcc 6.4.2 XE3 (UP2)fastdccXE3v64.2.7z150.88 KB325 times2019-03-23
fastdcc 6.4.2 XE4 (UP1)fastdccXE4v64.2.7z153.55 KB288 times2019-03-23
fastdcc 6.4.2 XE5 (UP2)fastdccXE5v64.2.7z151.87 KB358 times2019-03-23
fastdcc 6.4.2 XE6 (UP1)fastdccXE6v64.2.7z198.67 KB326 times2019-03-23
fastdcc 6.4.2 XE7 (UP1)fastdccXE7v64.2.7z219.84 KB346 times2019-03-23
fastdcc 6.4.2 XE8 (UP1)fastdccXE8v64.2.7z224.67 KB330 times2019-03-23
fastdcc 6.4.2 10 Seattle (RTM/UP1)fastdccD10v64.2.7z219.65 KB450 times2019-03-23
fastdcc 6.4.2 10.1 BerlinfastdccD101v64.2.7z223.52 KB491 times2019-03-23
fastdcc 6.4.2 10.2 (RTM/UP1/2/3)fastdccD102v64.2.7z219.06 KB819 times2019-03-23
fastdcc 6.4.4 10.3 (RTM/UP1/2)fastdccD103v64.4.7z228.61 KB808 times2019-07-31

Changelog

  • Fixed: CodeGenMod.Win32.VirtFinalSealed was broken for Delphi 10.3.2
  • Removed: IDE Insight Listbox drop shadow patch isn’t necessary for Delphi 10.3.2 anymore

IDE Fix Pack 6.4.3 for Delphi 10.3.2

By | July 24, 2019

With the newest Delphi 10.3.2 (Rio Update 2) the IDE Fix Pack failed with two compiler extension patches. The updated version 6.4.3 adds support for the Delphi 10.3.2 update.

Only Delphi 10.3.2 requires this update. Older Delphi versions are unchanged and stay at IDE Fix Pack version 6.4.2.

Download:

Name IDE Version File Size Downloads Added
IDE Fix Pack 6.4.2 2009 (UP4)IDEFixPack2009Reg64.2.7z242.75 KB1185 times2019-03-23
IDE Fix Pack 6.4.2 2010 (UP5)IDEFixPack2010Reg64.2.7z237.09 KB1431 times2019-03-23
IDE Fix Pack 6.4.2 XE (UP1)IDEFixPackXEReg64.2.7z221.38 KB691 times2019-03-23
IDE Fix Pack 6.4.2 XE2 (UP4+HF1)IDEFixPackXE2Reg64.2.7z316.78 KB765 times2019-03-23
IDE Fix Pack 6.4.2 XE3 (UP2)IDEFixPackXE3Reg64.2.7z257.4 KB587 times2019-03-23
IDE Fix Pack 6.4.2 XE4 (UP1)IDEFixPackXE4Reg64.2.7z260.1 KB442 times2019-03-23
IDE Fix Pack 6.4.2 XE5 (UP2)IDEFixPackXE5Reg64.2.7z257.7 KB548 times2019-03-23
IDE Fix Pack 6.4.2 XE6 (UP1)IDEFixPackXE6Reg64.2.7z423 KB477 times2019-03-23
IDE Fix Pack 6.4.2 XE7 (UP1)IDEFixPackXE7Reg64.2.7z429.48 KB707 times2019-03-23
IDE Fix Pack 6.4.2 XE8 (UP1)IDEFixPackXE8Reg64.2.7z431.7 KB599 times2019-03-23
IDE Fix Pack 6.4.2 10 Seattle (RTM/UP1)IDEFixPackD10Reg64.2.7z428.33 KB1087 times2019-03-23
IDE Fix Pack 6.4.2 10.1 BerlinIDEFixPackD101Reg64.2.7z430.65 KB1280 times2019-03-23
IDE Fix Pack 6.4.2 10.2 (RTM/UP1/2/3)IDEFixPackD102Reg64.2.7z426.27 KB2643 times2019-03-23
IDE Fix Pack 6.4.4 10.3 (RTM/UP1/2)IDEFixPackD103Reg64.4.7z444.98 KB3424 times2019-08-01

Download (fastdcc for the command line compiler):

Name IDE Version File Size Downloads Added
fastdcc 6.4.2 2009 (UP4)fastdcc2009v64.2.7z112.87 KB412 times2019-03-23
fastdcc 6.4.2 2010 (UP5)fastdcc2010v64.2.7z120.38 KB423 times2019-03-23
fastdcc 6.4.2 XE (UP1)fastdccXEv64.2.7z121.36 KB343 times2019-03-23
fastdcc 6.4.2 XE2 (UP4+HF1)fastdccXE2v64.2.7z166.48 KB343 times2019-03-23
fastdcc 6.4.2 XE3 (UP2)fastdccXE3v64.2.7z150.88 KB325 times2019-03-23
fastdcc 6.4.2 XE4 (UP1)fastdccXE4v64.2.7z153.55 KB288 times2019-03-23
fastdcc 6.4.2 XE5 (UP2)fastdccXE5v64.2.7z151.87 KB358 times2019-03-23
fastdcc 6.4.2 XE6 (UP1)fastdccXE6v64.2.7z198.67 KB326 times2019-03-23
fastdcc 6.4.2 XE7 (UP1)fastdccXE7v64.2.7z219.84 KB346 times2019-03-23
fastdcc 6.4.2 XE8 (UP1)fastdccXE8v64.2.7z224.67 KB330 times2019-03-23
fastdcc 6.4.2 10 Seattle (RTM/UP1)fastdccD10v64.2.7z219.65 KB450 times2019-03-23
fastdcc 6.4.2 10.1 BerlinfastdccD101v64.2.7z223.52 KB491 times2019-03-23
fastdcc 6.4.2 10.2 (RTM/UP1/2/3)fastdccD102v64.2.7z219.06 KB819 times2019-03-23
fastdcc 6.4.4 10.3 (RTM/UP1/2)fastdccD103v64.4.7z228.61 KB808 times2019-07-31

Changelog

  • Added: Delphi 10.3.2 (Rio Update 2) support

IDE Fix Pack moved to a new server

By | June 29, 2019

After 18 years of using a sub-domain on a very old server on a domain that wasn’t owned by me, my blog and therefore IDEFixPack got a new home.

My blog is now accessible via https://www.idefixpack.de . The old sub-domain has a “Moved Permanently” redirection to the new domain. Some time in the future the old sub-domain will be deleted.

IDE Fix Pack 6.4.2 released (bugfix release)

By | March 23, 2019

IDE Fix Pack 6.4.2 addresses two bugs. It fixes an issue with the TCustomListBox.ResetContent patch that was introduced with version 6.4 and caused EInvalidPointerOp exception with 3rdParty design editors. And it also fixes a 9 year old bug with outdated data in the UnitName HashMap patch after a debug session that caused the compiler to crash with an internal compiler error on the next compile.

Download:

Name IDE Version File Size Downloads Added
IDE Fix Pack 6.4.2 2009 (UP4) IDEFixPack2009Reg64.2.7z 242.75 KB 1185 times 2019-03-23
IDE Fix Pack 6.4.2 2010 (UP5) IDEFixPack2010Reg64.2.7z 237.09 KB 1431 times 2019-03-23
IDE Fix Pack 6.4.2 XE (UP1) IDEFixPackXEReg64.2.7z 221.38 KB 691 times 2019-03-23
IDE Fix Pack 6.4.2 XE2 (UP4+HF1) IDEFixPackXE2Reg64.2.7z 316.78 KB 765 times 2019-03-23
IDE Fix Pack 6.4.2 XE3 (UP2) IDEFixPackXE3Reg64.2.7z 257.4 KB 587 times 2019-03-23
IDE Fix Pack 6.4.2 XE4 (UP1) IDEFixPackXE4Reg64.2.7z 260.1 KB 442 times 2019-03-23
IDE Fix Pack 6.4.2 XE5 (UP2) IDEFixPackXE5Reg64.2.7z 257.7 KB 548 times 2019-03-23
IDE Fix Pack 6.4.2 XE6 (UP1) IDEFixPackXE6Reg64.2.7z 423 KB 477 times 2019-03-23
IDE Fix Pack 6.4.2 XE7 (UP1) IDEFixPackXE7Reg64.2.7z 429.48 KB 707 times 2019-03-23
IDE Fix Pack 6.4.2 XE8 (UP1) IDEFixPackXE8Reg64.2.7z 431.7 KB 599 times 2019-03-23
IDE Fix Pack 6.4.2 10 Seattle (RTM/UP1) IDEFixPackD10Reg64.2.7z 428.33 KB 1087 times 2019-03-23
IDE Fix Pack 6.4.2 10.1 Berlin IDEFixPackD101Reg64.2.7z 430.65 KB 1280 times 2019-03-23
IDE Fix Pack 6.4.2 10.2 (RTM/UP1/2/3) IDEFixPackD102Reg64.2.7z 426.27 KB 2643 times 2019-03-23
IDE Fix Pack 6.4.4 10.3 (RTM/UP1/2) IDEFixPackD103Reg64.4.7z 444.98 KB 3424 times 2019-08-01

Download (fastdcc for the command line compiler):

Name IDE Version File Size Downloads Added
fastdcc 6.4.2 2009 (UP4) fastdcc2009v64.2.7z 112.87 KB 412 times 2019-03-23
fastdcc 6.4.2 2010 (UP5) fastdcc2010v64.2.7z 120.38 KB 423 times 2019-03-23
fastdcc 6.4.2 XE (UP1) fastdccXEv64.2.7z 121.36 KB 343 times 2019-03-23
fastdcc 6.4.2 XE2 (UP4+HF1) fastdccXE2v64.2.7z 166.48 KB 343 times 2019-03-23
fastdcc 6.4.2 XE3 (UP2) fastdccXE3v64.2.7z 150.88 KB 325 times 2019-03-23
fastdcc 6.4.2 XE4 (UP1) fastdccXE4v64.2.7z 153.55 KB 288 times 2019-03-23
fastdcc 6.4.2 XE5 (UP2) fastdccXE5v64.2.7z 151.87 KB 358 times 2019-03-23
fastdcc 6.4.2 XE6 (UP1) fastdccXE6v64.2.7z 198.67 KB 326 times 2019-03-23
fastdcc 6.4.2 XE7 (UP1) fastdccXE7v64.2.7z 219.84 KB 346 times 2019-03-23
fastdcc 6.4.2 XE8 (UP1) fastdccXE8v64.2.7z 224.67 KB 330 times 2019-03-23
fastdcc 6.4.2 10 Seattle (RTM/UP1) fastdccD10v64.2.7z 219.65 KB 450 times 2019-03-23
fastdcc 6.4.2 10.1 Berlin fastdccD101v64.2.7z 223.52 KB 491 times 2019-03-23
fastdcc 6.4.2 10.2 (RTM/UP1/2/3) fastdccD102v64.2.7z 219.06 KB 819 times 2019-03-23
fastdcc 6.4.4 10.3 (RTM/UP1/2) fastdccD103v64.4.7z 228.61 KB 808 times 2019-07-31

Changelog

  • Fixed: Unit-Name HashMap could cause an internal compiler error if the debugger removed System/SysInit from the unit list without IDEFixPack’s knowing.
  • Fixed: TCustomListBox.ResetContent patch caused an EInvalidPointerOp exception if the IDE or a component designer used TCheckListBox.

IDE Fix Pack 6.4.1 (only 10.3 without Update 1 and Delphi 2010)

By | March 3, 2019

There was a bug in the IDE Fix Pack 6.4 for 10.3 Rio code that searches for the StyleUtils functions. It contained a hard coded (absolute) address that is only correct for the Update 1 VCL.BPL. So the patch failed for the RTM version or if the VCL.BPL is relocated (what is unlikely as it is one of the first DLLs that are loaded).

Furthermore there was a wrong $IFDEF in the code that caused Delphi 2010 to crash with an access violation if the TCustomListBox.ResetContext method was called on a control whos Handle wasn’t allocated yet.

Only the IDE part of IDE Fix Pack is affected so there is no need for a fastdcc hotfix.

Changelog:

  • Fixed: StyleUtils.inc patch contained a hard coded address causing the patch to fail if the DLL’s base address was relocated. (10.3 only)
  • Fixed: TCustomListBox.ResetContent patch crashed with an access violation. (2010 only)

Download:

Name IDE Version File Size Downloads Added
IDE Fix Pack 6.4.2 2009 (UP4) IDEFixPack2009Reg64.2.7z 242.75 KB 1185 times 2019-03-23
IDE Fix Pack 6.4.2 2010 (UP5) IDEFixPack2010Reg64.2.7z 237.09 KB 1431 times 2019-03-23
IDE Fix Pack 6.4.2 XE (UP1) IDEFixPackXEReg64.2.7z 221.38 KB 691 times 2019-03-23
IDE Fix Pack 6.4.2 XE2 (UP4+HF1) IDEFixPackXE2Reg64.2.7z 316.78 KB 765 times 2019-03-23
IDE Fix Pack 6.4.2 XE3 (UP2) IDEFixPackXE3Reg64.2.7z 257.4 KB 587 times 2019-03-23
IDE Fix Pack 6.4.2 XE4 (UP1) IDEFixPackXE4Reg64.2.7z 260.1 KB 442 times 2019-03-23
IDE Fix Pack 6.4.2 XE5 (UP2) IDEFixPackXE5Reg64.2.7z 257.7 KB 548 times 2019-03-23
IDE Fix Pack 6.4.2 XE6 (UP1) IDEFixPackXE6Reg64.2.7z 423 KB 477 times 2019-03-23
IDE Fix Pack 6.4.2 XE7 (UP1) IDEFixPackXE7Reg64.2.7z 429.48 KB 707 times 2019-03-23
IDE Fix Pack 6.4.2 XE8 (UP1) IDEFixPackXE8Reg64.2.7z 431.7 KB 599 times 2019-03-23
IDE Fix Pack 6.4.2 10 Seattle (RTM/UP1) IDEFixPackD10Reg64.2.7z 428.33 KB 1087 times 2019-03-23
IDE Fix Pack 6.4.2 10.1 Berlin IDEFixPackD101Reg64.2.7z 430.65 KB 1280 times 2019-03-23
IDE Fix Pack 6.4.2 10.2 (RTM/UP1/2/3) IDEFixPackD102Reg64.2.7z 426.27 KB 2643 times 2019-03-23
IDE Fix Pack 6.4.4 10.3 (RTM/UP1/2) IDEFixPackD103Reg64.4.7z 444.98 KB 3424 times 2019-08-01

Download (fastdcc for the command line compiler):

Name IDE Version File Size Downloads Added
fastdcc 6.4.2 2009 (UP4) fastdcc2009v64.2.7z 112.87 KB 412 times 2019-03-23
fastdcc 6.4.2 2010 (UP5) fastdcc2010v64.2.7z 120.38 KB 423 times 2019-03-23
fastdcc 6.4.2 XE (UP1) fastdccXEv64.2.7z 121.36 KB 343 times 2019-03-23
fastdcc 6.4.2 XE2 (UP4+HF1) fastdccXE2v64.2.7z 166.48 KB 343 times 2019-03-23
fastdcc 6.4.2 XE3 (UP2) fastdccXE3v64.2.7z 150.88 KB 325 times 2019-03-23
fastdcc 6.4.2 XE4 (UP1) fastdccXE4v64.2.7z 153.55 KB 288 times 2019-03-23
fastdcc 6.4.2 XE5 (UP2) fastdccXE5v64.2.7z 151.87 KB 358 times 2019-03-23
fastdcc 6.4.2 XE6 (UP1) fastdccXE6v64.2.7z 198.67 KB 326 times 2019-03-23
fastdcc 6.4.2 XE7 (UP1) fastdccXE7v64.2.7z 219.84 KB 346 times 2019-03-23
fastdcc 6.4.2 XE8 (UP1) fastdccXE8v64.2.7z 224.67 KB 330 times 2019-03-23
fastdcc 6.4.2 10 Seattle (RTM/UP1) fastdccD10v64.2.7z 219.65 KB 450 times 2019-03-23
fastdcc 6.4.2 10.1 Berlin fastdccD101v64.2.7z 223.52 KB 491 times 2019-03-23
fastdcc 6.4.2 10.2 (RTM/UP1/2/3) fastdccD102v64.2.7z 219.06 KB 819 times 2019-03-23
fastdcc 6.4.4 10.3 (RTM/UP1/2) fastdccD103v64.4.7z 228.61 KB 808 times 2019-07-31

IDE Fix Pack 6.4 released

By | March 1, 2019

The new IDE Fix Pack 6.4 not only adds support for Delphi 10.3 Rio (including Update 1) but also comes with some new IDE und Win64 compiler performance optimizations.

Download:

Name IDE Version File Size Downloads Added
IDE Fix Pack 6.4.2 2009 (UP4) IDEFixPack2009Reg64.2.7z 242.75 KB 1185 times 2019-03-23
IDE Fix Pack 6.4.2 2010 (UP5) IDEFixPack2010Reg64.2.7z 237.09 KB 1431 times 2019-03-23
IDE Fix Pack 6.4.2 XE (UP1) IDEFixPackXEReg64.2.7z 221.38 KB 691 times 2019-03-23
IDE Fix Pack 6.4.2 XE2 (UP4+HF1) IDEFixPackXE2Reg64.2.7z 316.78 KB 765 times 2019-03-23
IDE Fix Pack 6.4.2 XE3 (UP2) IDEFixPackXE3Reg64.2.7z 257.4 KB 587 times 2019-03-23
IDE Fix Pack 6.4.2 XE4 (UP1) IDEFixPackXE4Reg64.2.7z 260.1 KB 442 times 2019-03-23
IDE Fix Pack 6.4.2 XE5 (UP2) IDEFixPackXE5Reg64.2.7z 257.7 KB 548 times 2019-03-23
IDE Fix Pack 6.4.2 XE6 (UP1) IDEFixPackXE6Reg64.2.7z 423 KB 477 times 2019-03-23
IDE Fix Pack 6.4.2 XE7 (UP1) IDEFixPackXE7Reg64.2.7z 429.48 KB 707 times 2019-03-23
IDE Fix Pack 6.4.2 XE8 (UP1) IDEFixPackXE8Reg64.2.7z 431.7 KB 599 times 2019-03-23
IDE Fix Pack 6.4.2 10 Seattle (RTM/UP1) IDEFixPackD10Reg64.2.7z 428.33 KB 1087 times 2019-03-23
IDE Fix Pack 6.4.2 10.1 Berlin IDEFixPackD101Reg64.2.7z 430.65 KB 1280 times 2019-03-23
IDE Fix Pack 6.4.2 10.2 (RTM/UP1/2/3) IDEFixPackD102Reg64.2.7z 426.27 KB 2643 times 2019-03-23
IDE Fix Pack 6.4.4 10.3 (RTM/UP1/2) IDEFixPackD103Reg64.4.7z 444.98 KB 3424 times 2019-08-01

Download (fastdcc for the command line compiler):

Name IDE Version File Size Downloads Added
fastdcc 6.4.2 2009 (UP4) fastdcc2009v64.2.7z 112.87 KB 412 times 2019-03-23
fastdcc 6.4.2 2010 (UP5) fastdcc2010v64.2.7z 120.38 KB 423 times 2019-03-23
fastdcc 6.4.2 XE (UP1) fastdccXEv64.2.7z 121.36 KB 343 times 2019-03-23
fastdcc 6.4.2 XE2 (UP4+HF1) fastdccXE2v64.2.7z 166.48 KB 343 times 2019-03-23
fastdcc 6.4.2 XE3 (UP2) fastdccXE3v64.2.7z 150.88 KB 325 times 2019-03-23
fastdcc 6.4.2 XE4 (UP1) fastdccXE4v64.2.7z 153.55 KB 288 times 2019-03-23
fastdcc 6.4.2 XE5 (UP2) fastdccXE5v64.2.7z 151.87 KB 358 times 2019-03-23
fastdcc 6.4.2 XE6 (UP1) fastdccXE6v64.2.7z 198.67 KB 326 times 2019-03-23
fastdcc 6.4.2 XE7 (UP1) fastdccXE7v64.2.7z 219.84 KB 346 times 2019-03-23
fastdcc 6.4.2 XE8 (UP1) fastdccXE8v64.2.7z 224.67 KB 330 times 2019-03-23
fastdcc 6.4.2 10 Seattle (RTM/UP1) fastdccD10v64.2.7z 219.65 KB 450 times 2019-03-23
fastdcc 6.4.2 10.1 Berlin fastdccD101v64.2.7z 223.52 KB 491 times 2019-03-23
fastdcc 6.4.2 10.2 (RTM/UP1/2/3) fastdccD102v64.2.7z 219.06 KB 819 times 2019-03-23
fastdcc 6.4.4 10.3 (RTM/UP1/2) fastdccD103v64.4.7z 228.61 KB 808 times 2019-07-31

Changelog

  • Fixed: Packages with duplicate units may not have caused a fatal compiler error.
  • Added: Support for Delphi 10.3 Rio
  • Added: StyleUtils.inc performance optimizations for faster UI rendering (D10.3)
  • Added: Infinite loop detection in TDebugger.UpdateEventLog
  • Added: Fix for TStringList.IndexOfName bug (RSP-21633)
  • Added: Fix for access violation in the Welcomepage JScript9.dll binding
  • Added: TCustomListBox.ResetContent is skipped if the handle isn’t created yet
  • Added: More STRINGCHECKS-free RTL code (2009/2010)
  • Added: More DFM Streaming optimizations
  • Added: RTL and DFM streaming patches to remove STRINGCHECKS (2009/2010)
  • Added: Removed VclFixPack OutputDebugString calls (2009)
  • Added: FillChar uses Enhanced REP MOVSB/STOSB cpu feature if available for large sizes.
  • Added: Enabled CPU LOCK string assignment optimization for local variables
  • Added: -x-Oe (experimental optimizations) and -x-cgo compiler option extension
  • Added: CodeGen: Remove of some unnecessary push/pop operations
  • Added: Expression Evaluator allows array access to pointers even if the type wasn’t declared with {$POINTERMATH ON}
  • Added: Max number of constants in a function was increased from 64K to 16M (2009-XE3)
  • Added: New compiler option extensions: -x–compileonly, -x–reslist, -x–depfile, -x–unitstats
  • Added: More performance optimization for the DCC64 compiler
  • Added: TStringBuilder.SetLength optimization [RSP-19178] (XE+)
  • Added: TStrings.GetDelimitedText optimization
  • Improved: Slight faster TStringList.IndexOfName optimization for sorted string lists.

Debugging the RAD Studio IDE

By | December 15, 2018

When I work on my IDE plugins I constantly need to debug the IDE. To make my live a lot easier I wrote an IDE plugin that adds another symbol resolver to the Delphi Debugger, so the debugger can use the *.jdbg files and show the actual function names (including line numbers) in the call stack. Even the CPU view uses more colors to show call, jmp, ret, nop, try/finally/except and more in different colors and resolves call and jump target addresses to their names if available.

In order to identify the code that causes performance issues I use “poor man’s profiling”. I pause the IDE multiple times while the task that takes up the time is running and look at the call stack. If a function comes up in all call stacks, it is is either the culprit or a function that is called very often (or you are just unlucky).

If the task takes really long, pausing the IDE withing the debugger IDE via the pause button is doable, but if the task takes only 2 seconds switching to the other IDE or moving the mouse to the pause button can be too slow, so I use the F12 debug hotkey that Windows reacts to and notifies the debugger to pause the process. Unfortunately Microsoft disabled that feature with Windows Vista. So I had to emulate that functionally with my own IDE plugin that reacts to the F12 hotkey while the debugger is running.

Tools used:

Installing the IDE plugins

Both tools come without an installer, so you have to install them by hand. After extracting the 7z files you have to create two registry entries (Delphi 10.3 Rio):

  1. Start regedit.exe
  2. Navigate to HKEY_CURRENT_USER\Software\Embarcadero\BDS\20.0\Experts
  3. If the “Experts” key doesn’t exist, you have to create it by right clicking on the “20.0” key and select “New/Key”
  4. Add a new String value by right clicking in the listview and select “New/String Value”.
    Name: DebuggerCallStackResolverR103
    Value: C:\The\Path\To\DebuggerCallStackResolverR103.dll
  5. Add another String value by right clicking in the listview and select “New/String Value”.
    Name: DelphiF12HotKeySupport
    Value: C:\The\Path\To\DelphiF12HotKeySupport.dll
  6. Close regedit.exe

Starting the debugger IDE

Start the RAD Studio IDE. There is nothing special here.

Starting the IDE that we want to debug

For IDE plugins and component packages

If you are writing an IDE plugin or want to debug a component, you open your project and in the “Run/Parameters…” dialog set the “Host application” to “$(BDS)\bin\bds.exe” (without the quotes). If you want to use a different registry key for the debugged IDE then you can also set the “Parameters” to “-rMyRegistryKey“. That way the IDE starts with a new registry key having a clean IDE, so it doesn’t have any additional library paths, components or IDE plugins installed that.

Compile and Start your project.

I use the -r command line parameter for my IDE plugins because the debugged IDE has to load the just compiled versions of the DLLs instead of the release versions that are installed into the debugger IDE.

Just for call stacks

If you only want to identify an IDE bug or a performance issue you can start the second IDE without opening any project by using the “Run/Load process…” dialog. Select the “Embarcadero Windows 32bit-Debugger” in the Debugger combo box and set the “Host application” to “$(BDS)\bin\bds.exe” (without the quotes). Set the “After load” radio button to “Run” and press the “Load” button.

Skipping the usual startup exception

The IDE throws some exception during the startup, that are handled by the IDE but now that a debugger is attached to the IDE’s process you will see them.

The first exception you may encounter is an EFOpenFile exception for the “%USERPROFILE%\sanct.log” file. That has something to do with the product licensing and now that two IDEs are running the first holds the file exclusively open causing the second IDE to fail to open the file. You can ignore this exception (you may add the EFOpenFile exception to the ignore list if you start the debugged IDE multiple times.

The next exception is ESanctSocketException “Cannot start instance counter. Port is already in use (10048).”. Again caused by the product licensing. This time it wants to listen to a port but the debugger IDE already opened that port. Add that exception type to the ignore list because we don’t care about it and the exception type is a special type not like EFOpenFile)

The EFOpenFile exception for the sanct.log file is thrown again. Skip it again.

And finally we reach the EAccessViolation from the welcome page (something the IDEFixPack for Rio will fix). Skip that one.

If you are in the editor you may see an EParseError exception. You can add that exception to the ignore list.

Identifying the performance issue

Now you can start the task that you think is taking a lot of time and while it is causing the CPU or I/O usage to be high, you can pause the debugged IDE by pressing the pause button in the first IDE or by pressing the F12 debug break hotkey in the debugged IDE. This brings you usually to the CPU view and you can have a look at the call stack of all the threads by double clicking on a specific thread in the Threads list what shows the thread’s call stack in the Call Stack window.

DDevExtensions and DFMCheck released for Delphi 10.3 Rio

By | December 8, 2018

The DDevExtensions 2.85 and the DFMCheck 1.6 are now available for Delphi 10.3 Rio.

DDevExtensions Changelog:

  • Added: Support for Delphi 10.3 Rio
  • Added: Use Unit dialog option “Every unit on a single line”
  • Improved: UnitSelector Dialog in Delphi 2009 opens much faster
  • Fixed: Structure-View search dropdown had a max height of 2 items

DDevExtensions

Name IDE Version File Size Downloads Added
DDevExtensions 1.61 5-2007 DDevExtensions161Setup.zip 734.07 KB 18612 times 2009-01-10
DDevExtensions 2.8 Features PDF DDevExtensionsFeatures.pdf 602.92 KB 13550 times 2014-12-27
DDevExtensions 2.4 7, 2007 DDevExtensions24Setup7_2007.zip 535.41 KB 11136 times 2011-07-25
DDevExtensions 2.6 (legacy) XE2+UP3 DDevExtensionsSetup26.zip 800.68 KB 2040 times 2013-11-28
DDevExtensions 2.85 2009-10.3 DDevExtensions285.7z 1.24 MB 4953 times 2018-12-12

DFMCheck

Name IDE Version File Size Downloads Added
DFMCheck 1.6 5-10.3 DfmCheckSetup16.7z 717.43 KB 1200 times 2018-12-08

IDE Fix Pack 6.3.2 for XE2 only

By | June 18, 2018

There was an off-by-one bug in the Win64 Compiler Speed Pack for XE2 since the release of version 6.0. This caused the XE2 dcc64 compiler to generate defective code that caused crashes in the created executable file.

The off-by-one bug only affected XE2. When I began writing the patches I used XE4 and all Win64 compilers worked almost out of the box with the same patches. But XE2 is different as it was the first Win64 compiler. One of the enumerations got extended by one element in XE3 and the patch didn’t have checks for that case. So I never noticed that my enumeration type had an additional element in the middle if it was compiled for the XE2 compiler. That change offsets all following elements by one an caused bugs in the patches.

There is now a special release 6.3.2 for XE2 that addresses this IDE Fix Pack bug.

Download

Name IDE Version File Size Downloads Added
IDE Fix Pack 6.3.2 XE2 (UP4+HF1)IDEFixPackXE2Reg63.2.7z262.41 KB1085 times2018-06-18

Name IDE Version File Size Downloads Added
fastdcc 6.3.2 XE2 (UP4+HF1)fastdccXE2v63.2.7z132.86 KB402 times2018-06-18

IDE Fix Pack 6.3 released

By | June 17, 2018

The new IDE Fix Pack 6.3 adds some IDE fixes and makes DFM reading a little bit faster due to the usage of buffers on the stack instead of the TBytes heap allocations with unnecessary FillChar calls that were introduced with XE3.

The compiler option extension -x-fpr also got a new feature. If a function has stack variables that exceed 4096 bytes, the function prolog that is generated will be up to 3 times faster than the original compiler generated code (RSP-19826).

Furthermore the compiler option extensions are now combined into -x-On options what makes it easier to specify the options because you don’t need to remember all the option names anymore.

-x-O1     Enable options -x-fvs   -x-fpr
-x-O2     Enable options -x-fvs   -x-fpr -x-orc
-x-O3     Enable options -x-fvs=2 -x-fpr -x-orc
-x-Ox     Enable ABI changing optimizations: -x-fvs=2 -x-fpr -x-orc=2 -x-ff

All options are listed in the Readme.txt and can be specified under Project Options/Delphi Compiler/Compiling/Other options/Additional options to pass to the compiler. (Screenshot)

Changelog

  • Added: Patch to remove IDE flickering when WM_SETTINGCHANGE is broadcasted
  • Added: Fix for RSP-20700: Tooltip Help Insight is blinking if Structure View is scrolled
  • Added: Undo XE3+ TFiler/TReader/TParser/TStream TBytes usage, replace SetLength with SetLengthUninit for special cases
  • Added: -x-fpr generates 3 times faster stack memory page probing code (RSP-19826)
  • Added: Options -x-O1, -x-O2, -x-O3, -x-Ox that enable other optimization options

Download:

Name IDE Version File Size Downloads Added
IDE Fix Pack 6.4.2 2009 (UP4) IDEFixPack2009Reg64.2.7z 242.75 KB 1185 times 2019-03-23
IDE Fix Pack 6.4.2 2010 (UP5) IDEFixPack2010Reg64.2.7z 237.09 KB 1431 times 2019-03-23
IDE Fix Pack 6.4.2 XE (UP1) IDEFixPackXEReg64.2.7z 221.38 KB 691 times 2019-03-23
IDE Fix Pack 6.4.2 XE2 (UP4+HF1) IDEFixPackXE2Reg64.2.7z 316.78 KB 765 times 2019-03-23
IDE Fix Pack 6.4.2 XE3 (UP2) IDEFixPackXE3Reg64.2.7z 257.4 KB 587 times 2019-03-23
IDE Fix Pack 6.4.2 XE4 (UP1) IDEFixPackXE4Reg64.2.7z 260.1 KB 442 times 2019-03-23
IDE Fix Pack 6.4.2 XE5 (UP2) IDEFixPackXE5Reg64.2.7z 257.7 KB 548 times 2019-03-23
IDE Fix Pack 6.4.2 XE6 (UP1) IDEFixPackXE6Reg64.2.7z 423 KB 477 times 2019-03-23
IDE Fix Pack 6.4.2 XE7 (UP1) IDEFixPackXE7Reg64.2.7z 429.48 KB 707 times 2019-03-23
IDE Fix Pack 6.4.2 XE8 (UP1) IDEFixPackXE8Reg64.2.7z 431.7 KB 599 times 2019-03-23
IDE Fix Pack 6.4.2 10 Seattle (RTM/UP1) IDEFixPackD10Reg64.2.7z 428.33 KB 1087 times 2019-03-23
IDE Fix Pack 6.4.2 10.1 Berlin IDEFixPackD101Reg64.2.7z 430.65 KB 1280 times 2019-03-23
IDE Fix Pack 6.4.2 10.2 (RTM/UP1/2/3) IDEFixPackD102Reg64.2.7z 426.27 KB 2643 times 2019-03-23
IDE Fix Pack 6.4.4 10.3 (RTM/UP1/2) IDEFixPackD103Reg64.4.7z 444.98 KB 3424 times 2019-08-01

Download (fastdcc for the command line compiler):

Name IDE Version File Size Downloads Added
fastdcc 6.4.2 2009 (UP4) fastdcc2009v64.2.7z 112.87 KB 412 times 2019-03-23
fastdcc 6.4.2 2010 (UP5) fastdcc2010v64.2.7z 120.38 KB 423 times 2019-03-23
fastdcc 6.4.2 XE (UP1) fastdccXEv64.2.7z 121.36 KB 343 times 2019-03-23
fastdcc 6.4.2 XE2 (UP4+HF1) fastdccXE2v64.2.7z 166.48 KB 343 times 2019-03-23
fastdcc 6.4.2 XE3 (UP2) fastdccXE3v64.2.7z 150.88 KB 325 times 2019-03-23
fastdcc 6.4.2 XE4 (UP1) fastdccXE4v64.2.7z 153.55 KB 288 times 2019-03-23
fastdcc 6.4.2 XE5 (UP2) fastdccXE5v64.2.7z 151.87 KB 358 times 2019-03-23
fastdcc 6.4.2 XE6 (UP1) fastdccXE6v64.2.7z 198.67 KB 326 times 2019-03-23
fastdcc 6.4.2 XE7 (UP1) fastdccXE7v64.2.7z 219.84 KB 346 times 2019-03-23
fastdcc 6.4.2 XE8 (UP1) fastdccXE8v64.2.7z 224.67 KB 330 times 2019-03-23
fastdcc 6.4.2 10 Seattle (RTM/UP1) fastdccD10v64.2.7z 219.65 KB 450 times 2019-03-23
fastdcc 6.4.2 10.1 Berlin fastdccD101v64.2.7z 223.52 KB 491 times 2019-03-23
fastdcc 6.4.2 10.2 (RTM/UP1/2/3) fastdccD102v64.2.7z 219.06 KB 819 times 2019-03-23
fastdcc 6.4.4 10.3 (RTM/UP1/2) fastdccD103v64.4.7z 228.61 KB 808 times 2019-07-31