I am wanting to upgrade our code from Delphi 2007/2010 to XE5, and I am running into some roadblocks... third party libraries...

I am wanting to upgrade our code from Delphi 2007/2010 to XE5, and I am running into some roadblocks... third party libraries...

We have upwards of 20 of those, some of which are buried deep in the darker caverns of our code, and some that I think the original developers threw in there merely to torment future developers. It is cumbersome (nigh impossible) to re-install the IDE, let alone upgrade.

Anyone have any advice/wisdom on whether ripping out the more obscure components is wise/worth it?

At this point, my lack of experience with Delphi is leaving me with no idea which direction to go.

Thanks!

Comments

  1. If you are staying in Windows, DON'T DO IT!!! I know this sounds stupid, but there are significant downsides to bringing your project up to the latest Delphi. Specifically, in CodeGen; Emb has spent most of XE2 to XE5 with FireMonkey and something strange has happened, where code is being compiled into almost 10x the number of instructions. I spent about 10 months bringing a networking-project up from Delphi 2010 to XE2, it involved tons of individually evaluated lines of code and how it dealt with string/char (AnsiString/AnsiChar). In the end, it was easy to Search|Replace and really hard to track down the errors. In addition, I still have to use Delphi 7 in order to get a couple EXEs small enough for embedding in resources (CodeGen in XE2 is many, many times bigger than 7). Don't forget how expensive it is to update all of your third-party components; Emb is on a new release every 8 months right now.

    However, if you are looking to retain your Pascal knowledge and get into OSX/iOS/Android; it might be fun. But then again, search for jobs that need Delphi for Mobile and it might be a waste of time.

    EDIT: Here's the QC for the regression on CodeGen:

    http://qc.embarcadero.com/wc/qcmain.aspx?d=121566

    ReplyDelete
  2. I think I'd probably bite-the-bullet and upgrade the app and components. Over the years I've made a concerted effort to minimize the number of components I use. As a general rule I don't use any freeware and try to stick to the larger component vendors e.g. TMS and DevExpress.  Last year I migrated from a component which I (did) use extensively (NativeExcel) to TMS' FlexCel. I thought it would be a massive job but in the end, head down, I managed to complete the work in about one week. In hindsight it was well worth it.

    ReplyDelete
  3. I'm now on a similar process, upgrading a D7 code to D2009 so it work with new components, and maybe XE2, to test with 64 bits; the solution was install D7 and all third-party under Win7 (then 8) so I could have an interim edition to clean the code in parallel with the new one.
    there are some utilities like Icarus (free, they have also a paid more powerful version) that will help you find the cross references and dependencies between units.
    I still had some issues even with big third-party vendors, like, I used a TMS dbgrid that was substituted for a new one but then I got problems finding references to zero-based and one-based grid indices and things like that, but, surprisingly, Business Skin (almdev), Eldos (now LMD) and SiLang compiled with the new verisions without any glitch.

    ReplyDelete
  4. What are some of these components? If you list them, people here may also have used them and know how to tackle that specific one.

    In general, you should only buy components / libraries with source (a bit late now, I know) and if you can't find a modern version of the library, and can't compile/update the source in the new IDE, then you will have to find a replacement.  Ask about each one here or on SO and we might be able to help.  (For example, if you have Abbrevia components you might be wondering how to handle it... but many were open-sourced and are still maintained so it's a lot easier than it seems at first.)

    Why is it cumbersome to install the original IDE?  (Number of components to install?)  Make an image of a developer's computer who already has it installed, and run the image in a VM.  Or, if there is no-one, bite the bullet and install it once in a VM, and now you can use it whereever and whenever you need to.

    ReplyDelete
  5. Several of the components have installers, which make them very easy to install. DevEx, RODA, Quick Reports, IBDAC are all easy to install. I have had some issues with the DevEx installer not placing all the files I need to compile so I end up getting them from the one machine we have working.

    The rest need to be compiled from the source before being used, which isn't terrible once you get the hang of the process. The main ones are SynEdit, FIBPlus, TurboPower AsyncPro, TurboPower SysTools, TurboPower LockBox. SynEdit sometimes causes some problems, but I have been able to work through those.

    The one that causes me the biggest grief is TeeChartPro706. It seems to conflict with the TeeChart stuff that comes with Delphi 2007. I have not been able to break through that wall yet.

    The current working IDE is on an XP Pro box. I don't want to image it because the OS is doing funky thing and has way too many other things installed on it. I have been trying to get D2007 installed on a Windows 7 VM for a few months now and have not yet been successful.

    I think the best option may be just to rip out TeeChartPro, and maybe the DevEx stuff that is causing me problems.

    ReplyDelete
  6. I moved to a vmware image for my development around 2007, it's excellent for stepping through component installation; mainly because you can take snapshots each and every new component and make sure you can roll back any changes.

    Try ununstalling the TeeChart that comes in Delphi 2007 from the Component|Install Packages|Uncheck, then try it, then Remove.

    FYI... v2007 was excellent, v2009/2010 brought the Unicode change but the IDE is unstable. I didn't touch XE1, but XE2 is good and I'd consider it the first stable Unicode (but 64-bit/FM/iOS is terrible).

    I think I'm going to try and backport my XE2 project to Delphi 2007 and do some performance testing. Hopefully I find my efforts to port to XE2 were worth it.

    ReplyDelete
  7. Adam Martin As a general rule it's difficult to upgrade to the latest version of Delphi and not upgrade to the latest version of the components. In your case I'd suggest upgrading to the latest version of TeeChart Pro. There are often issues with conflicts between the bundled version of TeeChart and the Pro version but the Steema forum is a good place to get them sorted.

    As for DevExpress, they are one set of components I'd recommend. Try installing them in a folder other than "Program Files". I install all of my components off one folder of the root directory (e.g. c:\Delphi XE\DevExpress\)

    ReplyDelete
  8. Thank you all for your help! I think I have some good places to start here! I will return and report progress just in case anyone is interested!

    ReplyDelete
  9. Vin Colgin The only real complaint my developer partner has about 2007 is how slow the code insight is.

    Vin Colgin and Steve Maughan, Thank you for the advice about TeeChart Pro! I feel a little less in the dark.

    ReplyDelete
  10. Oh yes, Code Insight is not what VS is... I have to turn the delay to the highest and only check Code Completion and Parameters. The slow speed can be unbearable. I put the vmware instance on a Raid0+1 array of SSDs, it helps for sure. Wish you all the luck and speed with the migration.

    ReplyDelete
  11. Adam Martin I'm interested, please do report back with your progress!  And I second the suggestion of upgrading all components - don't even try to use the old versions with the new IDE, it'll cause all sorts of problems.  Install the latest and upgrade the code to work with them.

    Good luck!

    ReplyDelete
  12. Adam Martin If you need it, I can offer my services of porting your application to XE5. For the components used, either update to the current version if available, or recompile the source code if you have it or replace by something lese if no other solution. I already have done that for several large and old applications.

    ReplyDelete

Post a Comment