Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


jbg last won the day on May 19

jbg had the most liked content!

Community Reputation

203 Excellent


Technical Information

  • Delphi-Version
    Delphi Community Edition

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. I have uploaded a new development snapshot for the (upcoming) IDE Fix Pack 6.5 IDE Fix Pack Snapshot Download What's new: Added: (IDE) Fix for RSP-23006: Edit controls in the ObjectInspector aren't clipped by the scrollbar anymore (10.3+) Added: (IDE) The compile progress dialog is updated only every 80 ms now. And if a remote desktop session is detected it is only updated every 250 ms. The IDE compiler runs in the main thread, so every GUI update affects the compilation time. Added: -x--jdbg compiler option extension that creates and attaches a jdbg-file. You don't need a detailed map file (-GD) anymore to create or attach a jdbg-file for the binary file. Attaching the jdbg PE section is done after the linker closed the binary file. -x--jdbg and -x--jdbg=1 create a jdbg-file -x--jdbg=2 attaches the jdbg data to the executable/dll/bpl. Question: "Why is the jdbg file smaller than my old file?" - Answer: "The old file was created with an older version of JclDebug.pas." Added: -x--unitstats compiler option extension outputs unit filenames for units with "unitname in 'filename'" entries. Added: -x-fvs compiler option extension also generates faster interface call stubs for virtual methods that are final or in a sealed class. Added: Package compilation is a lot faster in the linker and cleanup phase. Added: Faster ObjectTextToBinary (DFM) implementation by removing unnecessary string comparisons. This improves the linker's performance when it converts DFMs to resources. Added: Faster map file creation by using a much faster Sort-By-Address implementation and a faster \n to \r\n converter. Added: Faster unitname to unit filename resolving (unitname in 'filename') The compiler used a Byte as hash-value and a single linked list. The code is now replaced by a hash-map with a 32 bit hash-value. Added: Faster compiler inline handling for projects with lots of units. Added: The command line compiler uses a double linked unit list to remove and reorder items faster. The IDE compiler still uses the original single linked list because some other code in the IDE does something with it and I couldn't make it not crash. Added: LoadString cache for compiler error/warning/hint messages. The compiler loads the warning/hint string and then decides not to show it. The cache prevents the compiler from calling LoadString too often. Added: Some PAnsiChar/PWideChar RTL optimizations for the IDE and IDE Fix Pack. Fixed: Compiler option extensions didn't work in dcc*.cfg and project.cfg files. Now you can specify -x-* options also in *.cfg files. Fixed: Don't crash if a 3rdParty tool destroys the Castalia Clipboard Form. Fixed: -x-cgo compiler option extension crashed the 10.3 compiler. Removed: The "Exception catcher" patch for ErrorInsight is no more. It didn't have any functionality.
  2. At least it is not as performance damaging as preconditions. I remember the Indy project changed all the "if condition then raise" to something like "EIdException.RaiseIf(condition, ExceptionString-Concatenation)" in 2003/2004 and changed all that back because of the performance hit. And even in Java with a JIT-Compiler you shouldn't use preconditions if you don't know the effect it has: Somebody changed all the exception handling in a Base64 decoder to preconditions and the result was that converting a 500 MB file took hours instead of milliseconds. The garbage collector had to clean up all the strings that were created for every byte that was read and there were a lot of preconditions in the inner most loop.
  3. jbg

    Fix for bug in JclShell

    Your code already does it. And the JclShell unit now (git master branch) has the new function ShellLinkShortCut() that converts the HotKey to a ShortCut.
  4. jbg

    Fix for bug in JclShell

    This is no JclShell bug. It is a handling error. Your code mixes HotKey and ShortCut. THotKey.HotKey is not a (Windows) HotKey but a (Delphi) ShortCut. The IShellLink.GetHotKey function returns a (Windows) HotKey. Your "bug fix" code converts a HotKey to a ShortCut. If you look a the ComCtrls.pas TCustomHotKey class you'll see that the "HotKey: TShortCut" property's setter uses the private method ShortCutToHotKey to convert the specified ShortCut into a HotKey in order to send it to the HotKey-Control.
  5. jbg

    RAD Studio 10.3.3 now available

    Why? There seem to be no changes in the IDE and the compilers that would brake the current IDE Fix Pack 6.4.4.
  6. The -x-cgo is an experimental option and it is broken for Delphi 10.3. It works for older Delphi versions. The newest IDE Fix Pack development snapshot fixes this problem.
  7. jbg

    IDE Fix Pack 6.4.3 breaks compilation

    They were the same files. And to remove some confusion, I have now combined both downloads into one link.
  8. jbg

    IDE Fix Pack 6.4.3 breaks compilation

    The downloads are identical, but if you have 10.3.2 you don't need to download the updated download again. Only 10.3 and 10.3.1 didn't work due to a backward compatibility problem in 10.3.2.
  9. Unless you can send me the compiler's source code and the build tools for it...
  10. Only if you invent a cloning machine first.
  11. jbg

    IDE Fix Pack 6.4.3 breaks compilation

    This bug is now fixed in version 6.4.4. IDE Fix Pack 6.4.4 for Delphi 10.3.2
  12. jbg

    IDE Fix Pack 6.4.3 breaks compilation

    CodeGenMod.Win32.FastFuncProlog CodeGenMod.Win32.VirtFinalSealed Those 2 patches didn't work in 10.3.2.
  13. jbg

    IDE Fix Pack 6.4.3 breaks compilation

    You can try to set the IDEFixPack.DisabledPatches environment variable to a semicolon separated list of patch names. The easiest way is to open a cmd.exe and use SET IDEFixPack.DisabledPatches=CodeGenMod.Linker.CombineDllImportTab;CodeGenMod.OmitResultCopyRecord bds.exe That way you don't have to change your system and you can faster find the the broken patch. I would start by disabling all "CodeGenMod" patches first. Even if you don't use the "-x-XX" command line options the patches have to hook the compiler's code. The next step would be to use a larger block until the compiler starts working correctly (a rebuild of the project may be needed because of possible defect *.dcu files). Then you can reduce the number of disabled patches until you reach the patch or the patches that crash the compiler. Here is the list of compiler patches. CodeGenMod.Linker.CombineDllImportTab CodeGenMod.OmitResultCopyRecord CodeGenMod.Win32.FastFloat CodeGenMod.Win32.FastFuncProlog CodeGenMod.Win32.FastIntfVirtualStub CodeGenMod.Win32.OptimizedCodeGen CodeGenMod.Win32.VirtFinalSealed Compiler.BackgroundCompilerFileExists Compiler.CacheControl Compiler.CompareFileName Compiler.CRTL2010 Compiler.DbkGetFileIndex Compiler.DirectorySearch Compiler.DrcFileBuffer Compiler.Ext.LinkerOptions Compiler.FileNameStringFunctions Compiler.FileSearchCache- Compiler.FindPackage Compiler.Fixes Compiler.ImportedSymbol Compiler.KibitzCompilerImplUnitReset Compiler.KibitzGetValidSymbols Compiler.KibitzIgnoreErrors Compiler.MapFile.fprintf Compiler.MapFileBuffer Compiler.Memory.Shrink Compiler.NoUnitDiscardAfterCompile Compiler.Optimization Compiler.Package.CleanupSpeed Compiler.PrefetchToken Compiler.ReleaseUnusedMemory Compiler.ResetUnits Compiler.Scanner.GetSourceLine Compiler.SourceOutdated.1 Compiler.StrLenCalls Compiler.SymLookup Compiler.SymLookupScope Compiler.Unit.RdName Compiler.UnitBlockFreeHook Compiler.UnitFindByAlias Compiler.UnitFreeAll Compiler.UnlinkImports Compiler.WarnLoadResString Compiler.WriteCloseHandleThread ErrorInsight.SetKibitzedSinceCompiled
  14. If it is neither the file system nor registry accesses, then you could try to debug the Delphi IDE (with another Delphi instance) and pause the debugged IDE while it is taking its time to save the project. Then you can switch to the main-thread and look at the call stack to find out what the IDE is doing. How to debug the Delphi IDE itself.
  15. jbg

    IDE Fixpack 6.4.2 hangs Delphi 10.3.1

    What is your Windows version. I have Windows 10 1809.