The IDEFixPack 4.0 BETA begins…

By | November 3, 2010

All those who can’t wait to see the new old Code Completion/Code Insight, can now try the first BETA of the upcoming IDE Fix Pack 4.0 and DelphiSpeedUp 3.0 (D7, D2007).

Supported are Delphi 7, Delphi 2007, Delphi 2009, Delphi 2010 and Delphi XE.

C++Builder is not and won’t be supported. Not in the near or far future.

What can you expect from this BETA:

  • Code Completion/Code Insight pops up much faster. The first invocation still takes time because the files have to be loaded into memory.
  • Code Completion ignores errors in the code.
  • Code Completion doesn’t drop the unit cache after an aborted compilation. It will drop the unit cache after a successful compilation because that is necessary.
  • Code Completion doesn’t drop the unit cache if the user invoked it at an invalid scope.
  • Code Completion automatically updates itself if the user changes files in the IDE to be more up to date without dropping the unit cache every time it is invoked.
  • Code Navigation (Ctrl+Click) is faster because it doesn’t drop the unit cache every time it is invoked. It automatically updates the modified units instead.
  • Code Hints (not the IE window) are much faster because the unit cache isn’t dropped every time it is invoked.
  • Code Completion works in DPR/DPK files even if the (hidden) “Generate DRC” option is active.

Update: I have removed the Delphi XE version because it doesn’t work. I’ll have to find a different way to prevent the IDE from accessing the disk every time you invoke Code Completion.

Update 2: A new Delphi XE version is available. I have removed all the XE special handling code. That means the XE version now has the same optimizations in it that Delphi 2009 and 2010 use. In other words, the XE version is slower but not because IDEFixPack does something different. I hope for XE Update 1 to be much faster.#

Update 3: Delphi 7, 2007 and 2009 were broken. They will be available again with the BETA 2 releases.

Update 4: BETA 2 builds are available.

Update 5: BETA 3 builds are available.

  • Fixed: Delphi 2007: internal compiler error bug
  • Fixed: Delphi 7: Windows had to catch an AV in Windows.FindClose due to a very old performance patch. That should make the compiler’s file search faster.
  • Added: Delphi XE: Less calls to FileAge
  • Added: Delphi XE: Compiler now calls GetFileAttributes (as Delphi 2010 does) before calling into the IDE when using the background compiler that synchronizes with the main thread to get the file date.

Update 6: BETA 4 builds are available.

  • Fixed: Delphi XE: Interner Fehler: D27010 bug
  • Added: Delphi XE: Another compiler optimization
  • Added: Splash screen progress bar for Delphi 2009/2010/XE

Update 7: BETA 5 builds are available.

  • Fixed: Delphi 7 sometimes crashed (I don’t know what the compiler does with the stack but it can’t be good. After changing my (value type) hash table (that has a large static array in it) from a local to a global variable the access violations disappeared. And I didn’t run into a stack overflow).
  • Fixed: Delphi 7-2010: Access violation in GetSymtabOfUnit (that patch was added by IDEFixPack 3.5)
  • Added: Delphi 2007-XE: Unit cache isn’t dropped by Code Insight anymore after the linker has finished.

Update 8: BETA 6 builds are available.

  • Removed: Delphi 2007-XE: The unit cache must be dropped after linking otherwise Code Insight will fail. So I removed that feature that I’d introduced with Beta 5.
  • Added: Some additional null-pointer checks

Update 9: BETA 7 builds for IDE Fix Pack are available.

  • Fixed: IDE menu bar shrink bug (“minimize on start”)

Update 10: Release Candidate 1 builds are available

Update 11: Release Candidate 2 builds are available

  • Fixed: Package debugging
  • Fixed: The unit name hash table is now cleared before invoking Code Insight

 

Links to the videos:

This is BETA software. It may destroy your work or generate defect executables.
Use it at your own risk.
Name IDE Version File Size Downloads Added
DelphiSpeedUp 3.1-untested RC for Delphi 6 6 DelphiSpeedUpV31D6.7z 74.59 KB 1217 times 2011-04-22
DelphiSpeedUp 3.1-untested RC for Delphi 2006 2006 DelphiSpeedUpV31D2006.7z 106.03 KB 1307 times 2011-04-22
DDevExtensions 2.4.2 7/2007 speed 7, 2007 DDevExtensions242Setup7_2007.zip 535.43 KB 3543 times 2011-08-02

IDE Fix Pack for Delphi 2007 does not contain the Code Insight optimizations, they are in DelphiSpeedUp. But you must install both because some code was moved from IDE Fix Pack to DelphiSpeedUp. And DelphiSpeedUp 3.0 doesn’t work with IDE Fix Pack 2.8

136 thoughts on “The IDEFixPack 4.0 BETA begins…

  1. Felix

    4.0 Beta cannot work in XE.
    ctrl + space will dispaly nothing.

      1. Felix

        It is unstable in XE, sometime is ok, sometime cannot display code Insight.
        I am not sure the reason.

        1. Felix

          Andy,
          the reason is : you must compile project before use code Insight every time.

          1. Andreas Hausladen Post author

            I can reproduce this if I delete all the dcu files. It is the special handling for Delphi XE that breaks Code Insight if there are no DCU files available. If I remove this special code Code Insight calls GetAttributeEx multiple times for almost every unit that is used in the project. And that slows down Code Insight a lot.

  2. Rico

    Until now all works great. I found a really nice feature you’re not written about: compiling also works if the project.exe is already running! You rename the running exe to another name. That is really cool!
    The speed is awsome. Tested in 2007 and XE.
    I can nothing other say: you are a genius.
    Hopefully will many support your great _very helpfull_ work with a donation.

    1. Rico

      Sorry, i must correct my statement. The renaming of the project.exe was not from your tools. It comes from a plugin written by myself. Have it installed today after some years 🙂

  3. Rodrigo F. Rezino

    Tks too much.
    I’ll start use it tomorrow, and I’ll say to all my developers to test it. Tks again

  4. Dorin Duminica

    Thank you Andy, I will start working with the fix pack applied and get back to you in a couple of hours, my IDE target is 2010.

  5. Dorin Duminica

    OK, as I’ve promised I came back with feedback and the test results are:
    – I don’t know why, but the IDE doesn’t freeze anymore before a full build or before running the application
    – Code Completion is waaay more faster
    Bottom line, I’ve worked a few hours with the fix applied and all I can say OUTSTANDING WORK ANDY, dankeschön!!
    Give it 1 or 2 days more in beta version and if no errors will be reported you can call it a release!!

  6. Jens Weigele

    Hi,

    sometimes I get the following error with Delphi XE and IDEFixPack 4.0 Beta 1:
    [DCC Fataler Fehler] xxxxxxx.pas(512): F2084 Interner Fehler: D27010

    I can’t find something about this error, therefore I think the error is raised by IDEFixPack (I also didn’t saw this errornumber before).
    It only appears sometimes and only if I compile the project (Ctrl+F9). If I recreate the Project (Shift+F9) everything works fine.

    Greets
    Jens

    1. Andreas Hausladen Post author

      I have removed the Delphi XE version. It doesn’t work as expected. I have to figure out a different way to get Code Insight faster.

      1. Jens Weigele

        Hi,

        I still get this error with Beta 2.
        Seems like it only appears if I canceled the compilation before.

        Greets
        Jens

        1. Andreas Hausladen Post author

          I can’t reproduce this. For me it works.

          Is your project a DLL, Package, EXE, …?
          Are you compiling against runtime packages?
          Did you change the project’s options (stack frame, range check, …) anything?

          1. Bo Sørensen

            On Delphi XE i also get the D27010 error as Jens reports.
            The project is an EXE, and is not compiled against runtime packages.
            To get the error no project options need to be touched.

            And only two units were modified, each of them were referenced in the .dpr file. Will try and gather some more info, is possible.

  7. Larry Hengen

    My current project says it’s 275,000 lines of code during a Build All. I am using DelphiSpeedUp 2.7.8 (packaged as 2.8) with Delphi 7, and CodeRush. With that version I can invoked CodeInsight in about 39 seconds initially. Subsequent invocations (I press Esc, then Ctrl+Space again) are instantaneous.

    When I installed Delphi Speedup 3 Beta 1 the initial Code Insight invocations were consistently around 35 seconds, but subsequent invocations also took 35 seconds. It seems the CodeInsight cache was not being used any more.

    Just thought I would let you know that with D7 it appears that something isn’t working as expected.

    1. Andreas Hausladen Post author

      > Subsequent invocations (I press Esc, then Ctrl+Space again) are instantaneous.

      Wouldn’t it be better to not use version 3.0 in Delphi 7 because there is/was no need for this optimization? I could have spent the time porting the patches back to Delphi 7 elsewhere. 🙁

  8. Jens Borrisholt

    Hi.

    I decided to participate in your beta project :

    I have a Delphi 2007 december release . A build all says ~1.4 mil lines of code :

    with DSU 2.8 I had a build time of 33 secs with DSU 3.0 build time is 16 secs !!!

    Code Completion is waaay more faster ..

    Thanks !!!

    Jens B

  9. fabio vitale

    Hi Andreas,
    I’ve just downloaded and installed DelphiSpeedUpV30D7.7z

    Does DelphiSpeedUpV30D7.7z already includes the new Code Completion/Code Insight, or do I need to download also IDEFixPack (which I did not find for D7)?

    Anyway thank you very much!

    fabio vitale

    1. Andreas Hausladen Post author

      There is no IDEFixPack for Delphi 7. DSU 3.0 BETA is all you need. But you should wait for BETA 2. Many structure offsets were wrong what causes strange behavior.

    1. Andreas Hausladen Post author

      Do you use packages in your project? Is something special with your project? After removing the special XE code I couldn’t reproduce the failing anymore.

      1. Felix

        I reproduce it:
        Open a Big project, my project unit output path are ‘..\UnitOutput’.
        if there are dcu file , the code Insight cannot display.
        when i delete all duc files , code insght work well.
        It is so strange.
        “I can reproduce this if I delete all the dcu files. It is the special handling for Delphi XE that breaks Code Insight if there are no DCU files available. If I remove this special code Code Insight calls GetAttributeEx multiple times for almost every unit that is used in the project. And that slows down Code Insight a lot.”

        1. Felix

          I add a post-build event to delete the dcu files after compiled.
          It work well. and the speed is much faster.
          thank you so much.
          very very Great.

          1. Andreas Hausladen Post author

            That is no solution, only a workaround. I really want fix this. But I’m clueless why it is happening. The only patch that changed the compiler’s logic was removed with BETA 1.1. All other patches use hash tables instead of going through lists.

  10. Olaf Monien

    Andy, I do not like that! Can you imagine whats going to happen? Customer’s telling me on the phone : “now, with IDEFixPack 4.0, you should be able to complete that project 50% earlier”

    🙂

  11. Steffen Binas

    After installing “IDE Fix Pack 2010 4.0 BETA 1” compiling my project takes ages (about 4 minutes, instead of about 30 seconds, 1.7 Mio lines). After removing the fix pack it is fast again.
    Interestingly this is the same slowdown I noticed some weeks ago with a fresh trial version of Delphi XE (this is the reason I don’t upgrade to XE now). We have a huge list (188) of _relative_ directories in our search path. My assumption that there is an “optimization” that doesn’t like relative paths.

    1. Andreas Hausladen Post author

      It could be the unit name hash table that is reinitialized over and over again.
      You can disable this hash table by setting the following 2 environment variables before starting Delphi.

      SET IDEFixPack.Compiler.KibitzIgnoreErrors=0
      SET IDEFixPack.Compiler.UnitFindByAlias=0

      1. Andreas Hausladen Post author

        And if it is not the unit name hash it could be the missing “FileExists” call.

        SET IDEFixPack.Compiler.FileExists=0

        1. Steffen Binas

          As Paul Thornton pointed out: it was background compilation. With “IDE Fix Pack 2010 4.0 BETA 3” the problem is gone. It compiles fast again.

  12. Markus Klingseisen

    Hi Andy,
    code completion is really really fast now!
    However, in Delphi 2007, the IDE hangs when I place a breakpoint in a procedure trace thru it (using F7 or F8) when I reach the end of the procedure, ie. last “end” statement.
    I didn’t do that before I’ve installed the Beta.

    1. Andreas Hausladen Post author

      The Delphi 7, 2007 and 2009 builds don’t work due to some wrong structure offsets. I will publish the BETA 2 builds in some minutes.

      1. Jan Derk

        Hey, it is 20 minutes later and there still is no beta 2 😉 😉 😉

      2. Markus Klingseisen

        I’ve tried it with Beta 3 and it works now.
        Well done. Thanks!

  13. Paul Thornton

    Fantastic job Andy. I’m experiencing massive improvements in the response times in Delphi 2010.

    I am however seeing the same compile time issues as Steffen. In my case, it seems to compile much quicker when I do a normal compile compared to when I compile in the background. I added the environment variables and it didn’t seem to make a difference.

    1. Andreas Hausladen Post author

      You use the background compiler? Now that explains it. The background compiler synchronizes with the main thread for every FileAge operation. And with the missing GetFileAttributes call from the compiler itself every “file existence test” is synchronized. I have removed the patch that removes the compiler’s GetFileAttributes call in BETA 2, that is now available.

  14. fabio vitale

    Hi Andreas,
    Just downloaded DelphiSpeedUp 3.0 BETA 2 for Delphi 7: FANTASTIC!

    Now it seems to work.

    I’ve temporary disabled CnPack Code Input Helper (Shift-F2) and after pressing Ctrl-Spacebar the CodeInsight windows is a rocket!

  15. Matt Jackson

    Hi Andy,
    Using delphi 2009, and have installed the 4.0 Beta. Have noticed that breakpoints no longer seem to work. When I hit F5 the usual breakpoint red blob is drawn next to the current line, however as soon as the project is run, the blob gets a cross through it (normally get this if I put a breakpoint on a line of code that can never get executed), and the breakpoint never happens.

      1. Matt Jackson

        Doh! Sorry about that – BETA 2 now installed and working fine – thanks!

  16. fabio vitale

    AV on exiting D7 (DelphiSpeedUp 3.0 BETA 2 for Delphi 7 + CnPack + CodeRush)
    —————————
    Delphi 7
    —————————
    Access violation at address 02C52476 in module ‘DelphiSpeedUp7.dll’. Read of address 7473655C.
    —————————
    OK
    —————————

  17. Dorin Duminica

    Sooo… I might be paranoid when I say this, but it seems FixPack Beta 4 for D2010 works even better?! I see some speed improvement between beta 1 and beta 2…
    Thank you again Andy!!

  18. Radek Červinka

    Delphi 2007, with DelphiSpeedUp3 Beta 2

    program Project1;
    {$APPTYPE CONSOLE}
    uses
      SysUtils;
    type
      TTestClass = class
      end;
    begin
       TTestClass.test;
    end.

    this produce
    [DCC Error] Project1.dpr(14): F2084 Internal Error: AV07096D81-R740204DB-0
    instead of
    [DCC Error] Project1.dpr(14): E2003 Undeclared identifier: ‘test’

    When remove Beta2 it works again.

    Or generally, when symbol not found Internal Error showed as result of compilation.

  19. Steven Haworth

    Is it possible to port these optimisations across to C++ Builder?

  20. Do-wan Kim

    Is Delphispeedup 3.0 not supported in delphi 2006?

    1. Andreas Hausladen Post author

      Only Delphi 7, 2007, 2009, 2010 and XE are supported. (Those are the version that Embarcadero give you access to if you buy XE.

  21. Jens Borrisholt

    Tak a new project

    try this :

    function GetRandomString(const Length: Integer) : string;
    var
    i: Integer;
    begin
    SetLength(Result, Length);

    for i := 1 to Length do
    Result[i] := RandomRange(32, 100) ;
    end;

    initialization
    randomize
    end.

    this produces:
    [DCC Error] Unit74.pas(32): F2084 Internal Error: AV02856D35-R740221C8-0

  22. Sven van Brügge

    Actually I installed Beta 3 but sometimes I get the following error with Delphi XE and IDEFixPack 4.0 Beta 3 during compiling with F9:
    [DCC Fataler Fehler] xxxxxxx.pas(): F2084 Interner Fehler: D27010

    The Editor shows the last Line of the actual opend unit where I made the last change. The last Line is the “end.”

    The same error comes if I close the project and reopen it.

    Only with Shift+F9 complete rebuild of the Project all works fine.

    Perheps it helps you: My Project is on a network drive

    1. Eric

      I’m occasionnally seeing the F2084 / D27010 too.
      It can be “solved” by deleting all DCUs and compiling.

      1. Andreas Hausladen Post author

        You could set one of these environment variable before starting the IDE to narrow down this bug.

        SET IDEFixPack.Compiler.KibitzIgnoreErrors=0
        SET IDEFixPack.Compiler.NoUnitDiscardAfterCompile=0
        SET IDEFixPack.Compiler.KibitzCompilerImplUnitReset=0
        SET IDEFixPack.Compiler.ResetUnits=0

    2. Bo Sørensen

      Same problem here.
      It is a project with lots of forms, and if i open one form and add a private member to the form, Ctrl+F9 will generate the error D27010.

      Things i have tried:
      * Remove the forms .dcu file before compiling. Gave the same error and the .dcu was NOT recreated.
      * Removing a label on the form triggers the error.
      * Renaming a label on the form does not trigger the error.
      * Made sure the forms .pas and .dcu had different timestamps. No change.
      * Remove forms .dcu file. Added private member -> gives an error. Removed private member and used Ctrl+F9, everything returns to normal and .dcu is recreated.
      * Tried the same in a unit without form, the error does NOT occur.
      * Autosave editor files: On, does not do anything.

      I can get past the error if i remove either the forms .dcu file or the main .dcu file.

      1. Bo Sørensen

        Tried to set all of the environment variables in a batch file with bds.exe in it, but none of them seems to work.

  23. Felix

    I found a case in XE, if i donot delete dcu files, code insight will not work well,
    I press ctrl + F9 and press ESC immediately, return IDE , press ctrl + space ,
    code insight work well. I installed Beta3

      1. Felix

        BTW, I use some third VCL components , but have dcu only.

    1. Bo Sørensen

      Installed BETA 4 into Delphi XE and can report that it indeed fixes the D27010 bug.

      Great job !

  24. Rodrigo F. Rezino

    I don’t know if what I felt in build 4 is just a felling or it’s really true.
    Tested on Delphi 2007.
    Until beta 3 when I compile the code and after use code completion it gave me a result very fast, now in beta 4 it slow down again, it seems like the old case that every time I compile the IDE goes to HD again.
    After the first call to code completion after the build it get very very fast as the old builds.

    att.

      1. Andreas Hausladen Post author

        If you cancel the compile dialog Code Insight uses the already loaded units. But if you get past the “linker” the unit cache is dropped. I already found a way to prevent that from happening.

  25. fabio vitale

    DelphiSpeedUp 3.0 BETA 4 for Delphi 7
    Delphi 7 + CnPack + CodeRush + MMX 9

    Hi Andreas,
    installed DelphiSpeedUp 3.0 BETA 4 for Delphi 7 and from time to time delphi simply “vanishes”, often I get AV on exiting D7.

    Previously I was using DelphiSpeedUp 2.8 for Delphi 7 + CnPack + CodeRush + MMX 9
    and the IDE was very stable.

    Any ideas?

    thank you very much

    fabio vitale

  26. Flavio Campana

    I foun what i think it’s a bug (dunno if it’s in you code or in the ide) for D2007:
    if i have

    type
    class1 = Class
    private
    something: class2;
    //cut
    end;

    class2 = class
    //cut
    end;

    it just crash without any warning or message error, closing immediately.
    It goes ok after i put forward declaretion on top.

  27. ClaudioC

    Delphi2007 + DelphiSpeedUp 3.0 BETA 4 + IDEFixPack 2007 BETA 4 + DDevExtensions 2.0 + CnPack.

    Hi Andreas,
    If I start a program from within the IDE in debug mode, after program termination, when the IDE is restored to full screen I got the main menu broken: I can see only the first three items: “File”, “Edit”, “Search” and part of the “View” item. The menu still works but I can’t see the menu captions.
    This behavior disappears if I remove IDEFixPack. The same thing happened with previous version of IDEFixPack.

    Any ideas?

    Thank you very much,
    Claudio

    1. Andreas Hausladen Post author

      No idea. I haven’t changed anything that touches the IDE’s code. All the new functionality patches the compiler (dcc.dll).

      1. Vladislav

        This bug is present in IDE Fix Pack 2007 2.9, 3.0 and 3.5 versions.

      2. ClaudioC

        As confirmed by Vladislav this bug is present in the previous versions of IDEFixPack too, not only in the 4.0 version.
        In Beta 6 the bug is still present.
        The origin of it has to be searched in the functionalities added in the previous versions of IDEFixPack.
        At the moment as a workaround I have removed IDEFixPack from my Delphi2007 and everything seems to function perfectly.

        Thank again,
        Claudio

        1. Andreas Hausladen Post author

          Are you using the docked or undocked mode? Is the debugging IDE automatically minimized when you start the IDE? I can start as many projects in Delphi 2007 and don’t see this issue (installation default settings [docked mode])

          1. Jan Derk

            Docked/undocked or embedded doesn’t matter. I see it though if I have minimize on run enabled.

      3. Jan Derk

        The disappearing menu items bug is present since 2.8. My guess is that it caused by this patch in version 2.8:

        Added fix for: QC #68493: Switching away and back to Delphi orphans focus on Code Editor

        It only shows if you have “Minimize on run” switched on. I switched that off as I like the latest IDEFixPack more than the minimize on run feature.

        1. Andreas Hausladen Post author

          The Code Insight patches are all in DelphiSpeedUp. The IDE Fix Pack for Delphi 2007 is the same as version 2.8 minus one compiler patch.

          1. Jan Derk

            This menu vanishing bug is an very old bug. I know that it has *nothing* to do with all the great new features for Code Insight. But as others mentioned the menu vanishing bug I tried to add a bit more info hoping that now that you are on a roll you could fix that one too.

            Because of that bug I always stayed at version 2.7 of the IDEFixpack. However I cannot do that anymore because the new DelphiSpeedup requires the latest IDEFixpack.

          2. Andreas Hausladen Post author

            DelphiSpeedUp does not work with IDE Fix Pack 2.8. It works with all other versions. So 2.7 is fine. But I already have a fix for the menu bug. You were right, it is the “Editor Focus” fix. I now defer the SetActiveWindow call to a later time by using PostMessage. That seems to fix both bugs.

  28. Felix

    In Beta5 XE, first time if there is no dcus in unit output folder, code insight work well. otherwise will fail.
    but after u compiled the project, code insight will work well in any case.

    Well done!

    1. Andreas Hausladen Post author

      Ok, that’s because I don’t drop the unit cache after linking. Looks like that is required. I’ll remove the code that I introduced with Beta 5.

    1. Felix

      Beta 6 is Perfect!
      I find the reason of the problem( dcus exists in unit output path, code insight will fail) .
      In my project , Tform3 inherited from Tform2, and Tform2 is inherited from Tfrom1. almost my forms are inherited from tfrom3,
      after compiled, i just need to delete the dcu of tfrom1 and tform2.
      I am enjoy the code insight now.

        1. Felix

          I still see it in Beta 6 and Beta7.
          use my method, it is not an trouble.

  29. Didiergm

    I am thoroughly enjoying BETA6 on D2010, with not apparent issues so far, just pure speed.

    Thanks a lot, your work is very much appreciated.

    Didier

  30. Stéphane Wierzbicki

    Just want to inform you that IDEFixPack2010Reg40BETA7 archive contains the Beta 6 instead !

    1. Andreas Hausladen Post author

      I only forgot to update the version number string. It is Beta 7. I’ll update the version number to prevent further confusion. Thanks for the info.

  31. Rodrigo F. Rezino

    [Other thing]
    I was thinking here, my equip have 7 programmers that work with Delphi 2007.
    All of them have the same problem, so I think that is general.
    The problem is, after a time programming when Ctrl+Click the IDE send you to a completely wrong place.
    During you adventures by the IDE “source”, did you already find something that can explain this behavior ?

    Other thing, http://goo.gl/y8zrp (a image is better than 1000 words), any of them are really errors. I remember once that you did something to this or am I wrong ?

    [Thanks]
    Andreas, thanks too much for you effort and sharing of these fantastic features, that you could just keep with you if you’d like.
    Things you are able to create certainly help programmers every where of the world, besides of being an inspiration to a lot of them as me.

    1. Andreas Hausladen Post author

      I can’t fix everything. And ErrorInsight got a lot better in Delphi 2010 and even more accurate in XE.
      About the Ctrl+Click. That is handled by HelpInsight and if that doesn’t work it falls back to CodeInsight. Maybe my changes fix that because CodeInsight is more up to date with my changes.

  32. Dorin Duminica

    I’ve worked with Beta 7 since release and I can’t tell you how thrilled I am that you’ve managed to make my life so much easier Andy, thank you very much!!

  33. Jens Borrisholt

    @Andreas did you recive my email about a bug in DDevExtensions ? Do you think this bug also is in you Code Insight ?

    Jens B

    1. Andreas Hausladen Post author

      @Jens: Yes, I got your mail, but I’m not working on DDevExtensions at the moment. And no the relative path bug is not in Code Insight. At least I haven’t “added” this bug if you see it because I haven’t touched any code in the compiler that handles file names.

  34. rpoulin

    Works fine and FAST on D2010 using CNNWizard Code Insight in place of native Delphi Code Insight. CNNW has a good Code Insight replacement with many parameters to play with.

  35. Holger Flick

    Great job, Andreas! It is a mystery to me how you achieve things using binary patches that EMBT cannot do amending their source code 🙂

  36. William

    Hi, Andy

    Thanks for the wonderful fixes. I had an issue since long time ago that every since a while, when I click to active a project (all my projects are in a Project group), I got some AVs, please see below stack trace info, I’m not sure its a DELPHI issue or a bug in your fixes.

    Best Regards,

    William

    edited by Andreas Hausladen: Removed stack trace.

      1. William

        HI, Andreas

        Sorry, I just wanted to help your great IDE fixes to be more better, since when I removed your IDE fixes, the issue I reported was gone. and now your IDE Fixes is in 4.0BETA, and you wanted someone to test it. so here I am. I sent the track info to you just wanted to help you to figure where the problem is. If its really bothering you, and thought its my pet bug, that’s fine.

        Regards,

        William

  37. David Robb

    Running latest IDE Fix Pack + Delphi Speedup with Delphi 2007. 2.3 MLOC excluding at least 1 MLOC in pre-compiled third party libraries. Code Completion, Code Insight work instantly after that initial, albeit painful load! This is the first time it has ever been usable with this project.

    Thanks Andreas and cheers!

  38. Bo Sørensen

    After testing for the last few days, it seems that the code is very stable. Only curious thing is that once in a while, Delphi is unable to locate a method when CTRL-clicking on a method name.
    Instead a seemingly random unit is shown and the cursor is placed in an empty part of the unit. If the unit is then changed and saved and Code Navigation is retried, it seems to work as intended.

    1. Andreas Hausladen Post author

      The auto-refresh doesn’t work as perfect as it should. For example files that you have opened after the first Code Insight invocation aren’t tracked for modifications. I have already started working on it.

  39. The_Fox

    I tested Beta6 with Delphi 7 and found a bug.

    Situation:
    A projectgroup containing several bpl’s, an exe that uses those bpl’s and a bpl that is loaded at run-time by the application (LoadPackage) when it is needed.
    In the project manager I have the run-time loaded package opened, I compile and/or build the package, blue dots appear. I set a breakpoint in the code (say a constructor of a Form), press F9, application starts, since the package is not loaded at that time the blue dots disappear. I open the Form in which I have set my breakpoint, the application loads the package and in Delphi the blue dots appear. But, the breakpoint I set shows as an invalid breakpoint, like setting a breakpoint on an empty line. So I am unable to debug run-time loaded packages. Packages that are loaded at startup don’t have this problem.

    This problem does not occur with DelphiSpeedup 2.8.

    1. The_Fox

      With RC1 I’m still unable to debug run-time loaded packages. (Blue dots appear, but setting breakpoints on it results in invalid breakpoints)

      1. Andreas Hausladen Post author

        This bug is now fixed. It was actually a very heavy bug in the unit name hash. The hash table wasn’t updated properly because I oversaw/hadn’t found a compiler function that alters the unit list. (Thanks to data breakpoints this function was easy to find)

  40. ouiouioui

    Hello i use your work since Delphi 2007 and it save me lot of time. So with this new version you make me happy again.

    Thanks you for your hard work and for share it with us.

  41. stOrM!

    Wonderful work thank you for sharing it!
    I’m currently testing beta7 for Delphi 2010 the code inside runs really fast and smooth for me.
    I didnt had any issues yet even beta2 works fine.

    However the only issue I’m having here is that the compiling process even of a small project tooks horrible time I really have no clue whats wrong. Just having gexperts and cnpack wizards running no other third party products. Well, but even if I completly uninstall alsmost anything and just using a naked delphi compiling tooks a lot of time the funny thing is it works like this:

    starting a new project compile it the very first time anything is fast. Compiling the same project a few times goes slower and slower its like getting kind of an idle period (between 6 – 10 seconds) before the compiling process starts.

    This really drives me nuts I did almost anything (disabled antivirus engines and stuff like that) to get compiling faster somtimes it helps to save the project files completly the very first time compiling gets faster but then again its getting slower and slower 🙁

    Other then that very nice work you did!

    kindest regards,
    s!

    1. Andreas Hausladen Post author

      You could help me to identify the slow code:
      1. Start Delphi
      2. Use the “Run/Load Process…” menu and start $(BDS)\bin\bds.exe
      3. Surpress all exceptions and press F9 until you see the second IDE
      4. Open your project
      5. Compile it as often as you need until it takes very long
      6. WinXP: Compile it again and press F12 while it compiles
      6. Vista/7: Compile it again, switch to the first IDE (debugger) and pause the application (you must be fast)
      7. You are now in the debugging IDE (first IDE): Switch to the main thread (Ctrl+Alt+T)
      8. Press Ctrl+Alt+C (CPU view)
      9. Select and copy the assembler code and the call stack (if available)
      10. Press F9 to continue the second IDE
      11. Start from 6. and do it 3 times.
      12. Send me all 3 call stacks and all 3 assembler code blocks.

      1. Rico

        I had possibly the same problem. In my case, the “project saving” was the slow operation. After every save – it takes longer. Delphi XE saves the project 3 times before it begins to compile and before every code insight invokation!
        The xml serializing for the project settings was terrible slow. Delphi was hanging inside the xmlrtl150.bpl all the time.
        I patched the useless project saving invocations and it runs very fast without 3 handbrakes.
        If anybody have also such a problem, here are the locations: (MAKE A BACKUP!)

        coreide150.bpl
        Search for:
        FF 52 30 8D 55 E0
        Replace first 3 bytes:
        90 90 90

        coreide150.bpl
        Search for:
        FF 52 30 8D 45 F8 8B CE
        Replace first 3 bytes:
        90 90 90

        delphicoreide150.bpl
        Search for:
        FF 52 30 8B 45 F0 0F B6 40 05
        Replace first 3 bytes:
        90 90 90

  42. Achim Kalwa

    Just installed DelphiSpeedUp 3.0 RC 1 for Delphi 2007, now Delphi 2007 Professional crashed on start with error message:
    —————————
    DelphiSpeedUp – EIntfCastError
    —————————
    Interface not supported
    —————————

    followed by a lot of more error messages.
    I’ve uninstalled this build, and Delphi 2007 start is Ok again.

  43. Delphinium

    Thanks for all the work you put into your tools. 🙂
    In Delphi7 with DelphiSpeedUp3 I get an access violation in module “rtl70.bpl” when switching projects more than once. First switch works, after that I get an AV at address 4002FB00 or 4008EEC. Don’t know if the addresses tells you anything or if they vary more.

  44. Radek Červinka

    Hello, thank you for your work. Only small notice: In Delphi 2007 I found minor bug in DelphiSpeedUp105 (RC 2) – see callstack.
    I found this with this way:
    – Start D2007
    – Reopen Old Exe project
    – Build this
    – Reopen package (this add package to Project Manager as second project)
    Now Install, Compile or Build this package and AV raised. This is repeatable, but not with every combination EXE + package. But it’s minor occurrence, so it’s not big problem, so it’s not important.

    —————————
    Error
    —————————
    Access violation at address 0709B355 in module ‘DelphiSpeedUp105.dll’. Read of address 08FED860.
    —————————
    OK Details >>
    —————————

    [0709B355]{DelphiSpeedUp105.dll} ComponentOptimize.TFastComponent.Notification (Line 354, “ComponentOptimize.pas” + 10) + $10
    [201625F0]{vcl100.bpl } Forms.TApplication.ProcessMessage (Line 8105, “Forms.pas” + 23) + $1
    [2016262A]{vcl100.bpl } Forms.TApplication.HandleMessage (Line 8124, “Forms.pas” + 1) + $4
    [2016291F]{vcl100.bpl } Forms.TApplication.Run (Line 8223, “Forms.pas” + 20) + $3
    [2003F681]{rtl100.bpl } Classes.TComponent.RemoveComponent (Line 10447, “common\Classes.pas” + 2) + $8
    [2003F4E5]{rtl100.bpl } Classes.TComponent.Destroy (Line 10367, “common\Classes.pas” + 9) + $9
    [20139CB0]{vcl100.bpl } Controls.TControl.Destroy (Line 3624, “Controls.pas” + 17) + $7
    [20163509]{vcl100.bpl } Forms.SetVisible (Line 8620, “Forms.pas” + 2) + $A
    [2013E09D]{vcl100.bpl } Controls.TWinControl.Destroy (Line 6060, “Controls.pas” + 27) + $7
    [201578FC]{vcl100.bpl } Forms.TScrollingWinControl.Destroy (Line 2362, “Forms.pas” + 3) + $7
    [20158A5D]{vcl100.bpl } Forms.TCustomForm.Destroy (Line 2937, “Forms.pas” + 14) + $A
    [20158A78]{vcl100.bpl } Forms.TCustomForm.Destroy (Line 2939, “Forms.pas” + 16) + $9
    [20006B72]{rtl100.bpl } System.@ClassCreate (Line 9502, “sys\system.pas” + 35) + $0
    [2013C527]{vcl100.bpl } Controls.TControl.WndProc (Line 5146, “Controls.pas” + 83) + $6
    [2003F65C]{rtl100.bpl } Classes.TComponent.InsertComponent (Line 10441, “common\Classes.pas” + 9) + $8
    [2003F46B]{rtl100.bpl } Classes.TComponent.Create (Line 10354, “common\Classes.pas” + 2) + $8
    [20139B23]{vcl100.bpl } Controls.TControl.Create (Line 3583, “Controls.pas” + 1) + $4
    [2013DE48]{vcl100.bpl } Controls.TWinControl.Create (Line 5985, “Controls.pas” + 1) + $4
    [20157872]{vcl100.bpl } Forms.TScrollingWinControl.Create (Line 2351, “Forms.pas” + 1) + $4
    [20158777]{vcl100.bpl } Forms.TCustomForm.CreateNew (Line 2876, “Forms.pas” + 2) + $6
    [201585DD]{vcl100.bpl } Forms.TCustomForm.Create (Line 2846, “Forms.pas” + 3) + $B
    [2001F9B0]{rtl100.bpl } Variants.VarToBoolAsString (Line 1671, “sys\variants.pas” + 12) + $18
    [2001DBF6]{rtl100.bpl } Variants.VarClearDeep (Line 721, “sys\variants.pas” + 9) + $3
    [2002246B]{rtl100.bpl } Variants.@VarFromBool (Line 2660, “sys\variants.pas” + 2) + $2
    [20003DC4]{rtl100.bpl } System.@FreeMem (Line 2699, “sys\system.pas” + 2) + $0
    [20007A19]{rtl100.bpl } System.@LStrArrayClr (Line 12266, “sys\system.pas” + 16) + $0
    [2001DC5D]{rtl100.bpl } Variants.@VarClr (Line 759, “sys\variants.pas” + 1) + $0
    [20DF97A6]{vclide100.bpl} IDERegIniPropSet.TRegistryPropSet.GetFieldData (Line 178, “IDERegIniPropSet.pas” + 41) + $8E
    [2164BFB2]{delphicoreide100.bpl} BasePasComIntf.TCompiler.DoCompile (Line 733, “BasePasComIntf.pas” + 26) + $F
    [2164C79B]{delphicoreide100.bpl} BasePasComIntf.TCompiler.Compile (Line 875, “BasePasComIntf.pas” + 31) + $7
    [216ED08C]{delphicoreide100.bpl} PasNativeCompilerAdapter.TCompilerAdapter.Compile (Line 202, “PasNativeCompilerAdapter.pas” + 12) + $1F
    [216ED295]{delphicoreide100.bpl} PasNativeCompilerAdapter.TCompilerAdapter.CompilePackage (Line 249, “PasNativeCompilerAdapter.pas” + 12) + $17
    [21663140]{delphicoreide100.bpl} PackageState.CreatePackage (Line 285, “PackageState.pas” + 20) + $19
    [216631BC]{delphicoreide100.bpl} PackageState.CreatePackage (Line 296, “PackageState.pas” + 31) + $5
    [21663231]{delphicoreide100.bpl} PackageState.CreatePackage (Line 309, “PackageState.pas” + 44) + $9
    [21663BA6]{delphicoreide100.bpl} PackageState.TPackageState.Build (Line 480, “PackageState.pas” + 8) + $28
    [216A2F54]{delphicoreide100.bpl} PasMgr.TPascalPackageCodeUpdater.DoCompile (Line 11004, “PasMgr.pas” + 4) + $11
    [216A2F83]{delphicoreide100.bpl} PasMgr.TPascalPackageCodeUpdater.DoCompile (Line 11009, “PasMgr.pas” + 9) + $F
    [216F1670]{delphicoreide100.bpl} CommonPasReg.CompileProject (Line 1114, “CommonPasReg.pas” + 16) + $3C
    [216A0FDB]{delphicoreide100.bpl} PasMgr.TPascalProjectUpdater.CompileProject (Line 10263, “PasMgr.pas” + 2) + $19
    [216A2ECA]{delphicoreide100.bpl} PasMgr.TPascalPackageCodeUpdater.Build (Line 10995, “PasMgr.pas” + 3) + $11
    [216A35AE]{delphicoreide100.bpl} PasMgr.TPascalPackageCodeUpdater.InstallPackage (Line 11172, “PasMgr.pas” + 4) + $8
    [21669A25]{delphicoreide100.bpl} PkgContainers.TStdPackageProjectContainer.CommandHandler (Line 151, “PkgContainers.pas” + 5) + $5
    [209F21D9]{coreide100.bpl} Containers.TStdContainer.CommandHandler (Line 3069, “Containers.pas” + 1) + $17
    [201305E7]{vcl100.bpl } Menus.TMenuItem.Click (Line 2283, “Menus.pas” + 14) + $8
    [20131B0F]{vcl100.bpl } Menus.TMenu.DispatchCommand (Line 3008, “Menus.pas” + 5) + $2
    [20132C6E]{vcl100.bpl } Menus.TPopupList.WndProc (Line 3798, “Menus.pas” + 4) + $E
    [20132BBD]{vcl100.bpl } Menus.TPopupList.MainWndProc (Line 3779, “Menus.pas” + 2) + $5
    [20040E4C]{rtl100.bpl } Classes.StdWndProc (Line 11583, “common\Classes.pas” + 8) + $0
    (00003083){IDEFixPack.dll} [07074083]
    [201625F0]{vcl100.bpl } Forms.TApplication.ProcessMessage (Line 8105, “Forms.pas” + 23) + $1
    [2016262A]{vcl100.bpl } Forms.TApplication.HandleMessage (Line 8124, “Forms.pas” + 1) + $4
    [2016291F]{vcl100.bpl } Forms.TApplication.Run (Line 8223, “Forms.pas” + 20) + $3
    [0042297A]{bds.exe } bds.bds (Line 195, “” + 7) + $7

Comments are closed.