Jump to content
Sanu

Upgrade from delphi 6 to delphi12

Recommended Posts

I need your advice and insights on upgrading a large-scale EHR (Electronic Health Record) system from Delphi 6 to Delphi 12. This system was originally developed in 2006, and the upgrade is necessary to take advantage of the modern features and performance improvements in Delphi 12

 

Key Considerations:

  1. Code Compatibility: I'm aware there are differences between Delphi 6 and Delphi 12 in terms of language and runtime libraries. How significant are these changes, and what are some common pitfalls to watch out for?
  2. Third-Party Components: The system relies heavily on third-party components. What is the best approach to handling components that may no longer be supported or compatible?
  3. Database Connectivity: Are there major changes in database connectivity methods that I need to be aware of? What are the best practices for updating database interactions?
  4. User Interface: With the newer UI components in Delphi 12, what strategies do you recommend for updating the user interface to improve usability and aesthetics?

Share this post


Link to post

What specific new features and performance improvements are you looking for?  What is the business case for the major effort a migration would involve?  This is many weeks or months of work, and retesting.  

 

All your other questions have been covered in detail over the last 15 years as others have migrated from non-unicode compilers to modern Delphi.  

 

I've just released a new version of one of my products built with Delphi 2007 because of third party component problems with Delphi 11.  The end users don't care.

 

Angus

 

  • Like 2

Share this post


Link to post

 

2. Depends on the third-party components used in the project.

3. We do not know how the old application was connected to the database. Nowadays FireDAC is the recommended (default) DB access library in Delphi. 

4. The best advice is to hire an UI expert to help to redesign the UI.

 

Share this post


Link to post

Hi. I did it this  year 2x times this way:

1. create copy of all project

2. transfer to Delphi 12.1 module by module. Delphi has good combatibility. However, it depends on components you used in old project. There is no universal advice

Share this post


Link to post

Just some general thoughts about such an upgrade:

- what exactly is the reason for upgrade? Is there a real business case to port? Or is it just because someone wants to use the new fancy things from newer Delphi versions?

- as you are asking for a large-scale EHR system: do you and your team have the resources to do it over probably several months or even years?

- if the current system is actively developed: can you handle two source branches that may differ heavily over months/years?

- as a port to Unicode is involved: what about your existing database? Can it handle Unicode already or is it necessary to upgrade database too. Are existing data ready for Unicode or does it need to be updated too?

- check, how good or bad the separation between UI / logic / database already is. Can it be improved on the current D6 system? If so: do it there, where applicable, so that you can see any problems soon and under real conditions.

- 3rd party: try to consolidate if there are too much different component collections involved.

- new UI features: forget about them at least for the moment. First try to port your application(s) to D12 and then introduce new UI. Only if a new UI components will help you to reduce/replace a lot of existing code or are unavoidable for port, consider adding it. But make sure, that new UI is consistent regarding user input with remaining older UI system. Your end users will be grateful.

Depending on who the end users are: are they willing to accept larger changes on UI? Have in mind that training for them may be necessary and who has to pay for it.

  • Like 1

Share this post


Link to post
3 hours ago, Sanu said:

I need your advice and insights on upgrading a large-scale EHR (Electronic Health Record) system from Delphi 6 to Delphi 12. This system was originally developed in 2006, and the upgrade is necessary to take advantage of the modern features and performance improvements in Delphi 12

 

Key Considerations:

  1. Code Compatibility: I'm aware there are differences between Delphi 6 and Delphi 12 in terms of language and runtime libraries. How significant are these changes, and what are some common pitfalls to watch out for?
  2. Third-Party Components: The system relies heavily on third-party components. What is the best approach to handling components that may no longer be supported or compatible?
  3. Database Connectivity: Are there major changes in database connectivity methods that I need to be aware of? What are the best practices for updating database interactions?
  4. User Interface: With the newer UI components in Delphi 12, what strategies do you recommend for updating the user interface to improve usability and aesthetics?

Emba Blog: https://blogs.embarcadero.com/upgrading-and-maintaining-delphi-legacy-projects/

  https://blogs.embarcadero.com/a-roadmap-to-migrate-your-legacy-delphi-and-c-applications-to-the-latest-blazing-fast-version/

 

Book review: https://dalijap.blogspot.com/2022/06/book-review-delphi-legacy-projects.html

 

I hope you have plenty of unit tests etc. for your project. With a jump that large and a project using many 3rd-party components this will probably amount to a major rewrite...

  • Like 1

Share this post


Link to post
  1. Code Compatibility. Delphi is nicely upwards compatible. There may be a few things where Unicode or AnsiString types are concerned but the code itself is surprisingly simple to upgrade.
  2. Third-Party Components: This may be the biggest challenge. Many small third-party component vendors are no longer around and there are some new ones. If you used Woll2Woll, you're in luck; if you used AddictSpell for spell-check, you'll need to look at TMS or DevExpress. If you used Raize Components, they now come with Delphi as Konopka Signature VCL Controls. TurboPower components are now open source with a few of them forked off to new products. You will have to do a lot of research to figure out which ones you can upgrade, which ones you'll have to replace.
  3. Database Connectivity: This will be highly dependent on what database you're connecting to. If you used a dBASE or Paradox type connection through the BDE, you would be advised to migrate to a SQL-based engine. If you used a BDE-replacement database, like DBISAM or one of the many others that are still in business, you can likely just upgrade. There are a few, like Firebird or Advantage, that FireDAC actually supports today. 
  4. User Interface: Monitors are much bigger and have much higher resolution today, so a program that looked fine on 800x600 yesteryear will look tiny and outdated today. Increase the font size, use TGridPanel in some cases, add styles, use AlignWithMargins, and study webinars on the subject.

A lot of the answers you're seeking will depend a lot on what you have. For example, the database update could be simple or difficult depending on what you're using. I'm involved in a large migration from Delphi 5 to Delphi 12 and the database back end is SQL Server which makes it simpler in some ways but going from BDE to FireDAC is not easy. If we were using a well-established database alternative that existed for D5 and is still around today, we probably wouldn't have to change quite so much--but then again, it all depends on how it was originally written: iterating through table components, no matter what database technology or components are in use, should be tossed in favor of writing queries--which could've been done in D5 or D6.

 

Lots of other good answers here too, but with vague questions, you'll get vague answers.

  • Like 1

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×