Jump to content
emileverh

Delphi 11, migrate or wait

Recommended Posts

1 minute ago, mvanrijnen said:

This discussion is every time a new delphi version is released it seems. 


And there are people with no problems at all, and there are people with mediocre problems, and there are (as am i and my collegue) people who get frustrated with every update/ugrade 🙂

Maybe EMB would do good to investegate why some (i don't know how many) people have still such big problems with Delphi, is it some specific component, but i do not see any efford from EMB to fix some problems for once and for all

(LSP anyone) 

 

 

keep noted, that this is just my opinion and i do not speak for the whole world. 

 

 

 

 

I love Delphi, I am using it since V1.0 ( that's a long time ago ). Yes we are all developers, and we make mistakes, but in my opinion D11 was released (much too) early. And I just focussed on High DPI, don't know what the other issues are.....

Share this post


Link to post

We've been waiting until Update 1 for every release for the last decade. 

Call me pessimist, but when things don't get better within a decade - will they ever?

  • Sad 2

Share this post


Link to post

If you use the Bookmarks add-in in GetIt (formerly from Parnassus), note that it's not yet available. 

Share this post


Link to post
13 hours ago, Roger Cigol said:

Warning: With RAD Studio 11 there is currently an issue with TLabelledEdit if you have the label to the left of the edit box. The positioning of the label sometimes is wrong at design time and it doesn't re position correctly if you update the label contents at run time. If you use TLabelledEdit with labels to the left of the edit box then check this out before moving projects to 11.0. Embarcadero know of this issue. It is not fixed in the "Novemeber" patch.

 

If you are posting this in the hope someone will eventually fix it... *post the link* to the issue so others can vote!

  • Like 1

Share this post


Link to post
18 hours ago, FPiette said:

Is 10.0 the first Delphi version that you use ?

The risk you are exposed to is that if you don't update your code with each new release, the more difficult it will be

I know. I updated another project from 10.0 to 10.4 because of High DPI requirements. I was very happy with the result.

 

It's just that it takes quite some time. And it's hard to justify spending time on updating your IDE when several other projects are already behind schedule again 😫

Edited by Der schöne Günther

Share this post


Link to post
29 minutes ago, Der schöne Günther said:

I updated another project from 10.0 to 10.4 because of High DPI requirements. I was very happy with the result.

It's just that it takes quite some time.

We probably do not write the same kind of code, because it never took much time to me to move a project, even a big one, to the next Delphi version. The only case when it took significant time was when Unicode was introduced. Most of the time, it was just a matter of recompile.

 

I must say that I always manage to have FULL source code for every component I use and have that source code included in all projects making use of the component. When a new Delphi release comes, most of the time a simple recompile is enough. This include the component package projects. The most common change to the source code is to add a simple conditional compilation related to compiler or runtime version. When you have full source code, you don't depend on component vendor when a new Delphi is released.

  • Like 2

Share this post


Link to post
26 minutes ago, FPiette said:

it never took much time to me to move a project, even a big one, to the next Delphi version. The only case when it took significant time was when Unicode was introduced

Agree. Delphi keeps backwards compat pretty well and major part of code doesn't require any changes.

Share this post


Link to post

For the most part, that's true, but I still remember how I spent most of my time porting own and 3rd party library code from 10.0 to 10.4:

The ever-changing platform constants (Android32, Android64, iOS Simulator 32, iOS Simulator 64, ...), removal of class helpers and such and changing object properties and behaviour in FireDAC.

 

Of course Delphi still has good  backward-compatiblity, but I have the feeling they have let things slide a bit, for the last versions.

Share this post


Link to post

The hard thing with a new environment, eg: Sydney vs Alexandria, is to move all 3rd parties libraries (often to re-buy), but overall learn workaround on always present IDE issues.

The time to discover a problem with an IDE and tool-chain and learn the right workarounds to continue to work is a long activity.
Back from new created file project to old, in case of very critical issues are a very waste of time.

  • Like 1

Share this post


Link to post
2 hours ago, shineworld said:

The hard thing with a new environment, eg: Sydney vs Alexandria, is to move all 3rd parties libraries (often to re-buy)

That is why I always STRONGLY recommend to buy the source code with any third party library/component you use and to ONLY use the source code and not a single pre-built item. Rebuild what you need for your application, add a project for that purpose to your application project group. When a new Delphi release comes, most of the time a simple recompile is enough. This include the component package projects. The most common change to the source code is to add a simple conditional compilation related to compiler or runtime version. When you have full source code, you don't depend on component vendor when a new Delphi is released.

  • Like 3

Share this post


Link to post

Of course for this I cannot create a test case, but it's in a real code and all references are valid:

PPodsetnik.fQuery.Connection:=PDatabase;

 

image.png.bc0528c4113bbbee60e9a0654c0988b6.png

 

image.png.3b12e941bbab26a5f22074414a45c311.png

 

Now we would expect that PPodsetnik.fQery.Connection = PDatabase:

 

image.png.6f20c67de253ffaf4a299af150e50487.png

Share this post


Link to post
4 hours ago, Lajos Juhász said:

Now we would expect that PPodsetnik.fQery.Connection = PDatabase

Probably the debugger can't call a getter/setter function.

Share this post


Link to post
1 hour ago, FPiette said:

Probably the debugger can't call a getter/setter function.

Most probably. Unfortunately Delphi 10.4 debugger doesn't have any issue to access the property :(.

Share this post


Link to post
18 minutes ago, Lajos Juhász said:

Most probably. Unfortunately Delphi 10.4 debugger doesn't have any issue to access the property :(.

Create a simple, reproducible example demonstrating the issue and publish it on https://quality.embarcadero.com because here, there is no chance to have it fixed if ever it is a bug.

Share this post


Link to post

How much is it for a perpetual license to renew to the latest version?  :classic_rolleyes:

 

As an example, IBM software with perpetual license can be renewed at about 20% of the software price.

Share this post


Link to post

I have been a Delphi user since it was first introduced. And before that I used Turbo Pascal. I have upgraded over a dozen times and currently on 10.4. I have a subscription that is still active but I have yet to upgrade to 11. I have dozens of very large active projects, and I dread any changes to my development environment including third-party components. Turbo Pascal and Delphi were much more advanced than any other IDE‘s on the market. Unfortunately, others have caught up and surpassed them. Embarcadero could learn a few things from the likes of webstorm. I started using Web storm for my JavaScript development and I am in love with its features and code writing efficiency, although it is a memory hog.  
 

I keep hoping for the new release of Delphi that is going to blow me away in terms of performance, stability, and code writing features. Expanding the VCLO, and all of the flavor of the day frameworks, don’t impress me. Just let me write my code, give old guy quick access to things that he can’t easily remember, while not being a great typer.  And hurry, before ChatGPT takes it over. 

  • Haha 1

Share this post


Link to post

The decision to switch to a new version of Delphi (it doesn't matter which one) should be made by you personally. If the difference between versions is not huge (for example, from Delphi 7 without Unicode support to Delphi 12), there should be no special problems.

In this regard, Embarcadero is great for developing corporate solutions, because it always pays a lot of attention to backward compatibility.
From the main recommendations:

always buy third-party components in versions with source code, it will protect you from the fact that the developer stops support and you simply can not update. If there is source code, it will take little time to compile them for a new version of Delphi (as practice shows in 90% of cases you just need to add the new compiler version to the inc file)
Usually it is - find something like:

// Delphi 10.4
  {$IFDEF VER340}
    {$DEFINE EC_UNICODE}
    {$DEFINE EC_VCL27}
    {$DEFINE EC_VCL27_UP}
    {$DEFINE EC_DELPHI}
    .....
{$ENDIF}


Copy the code below and add our version of the compiler:

// Delphi 11
 {$IFDEF VER350}
    {$DEFINE EC_UNICODE}
    {$DEFINE EC_VCL27}
    {$DEFINE EC_VCL27_UP}
    {$DEFINE EC_DELPHI}
    .....
{$ENDIF}


Second recommendation - if you don't have a license and it's a question of buying one, you can use Trial, compile your projects and test how your applications work and how the new version of Delphi works in designer mode (sometimes there are bugs that will spoil developers' lives. They are usually fixed quickly, but still). 
If all goes well, then make your decision to upgrade.

Share this post


Link to post
10 minutes ago, Softacom Company said:

... sometimes there are bugs that will spoil developers' lives. They are usually fixed quickly, but still).

Fixed quickly? Are we still talking about Delphi?

Share this post


Link to post
45 minutes ago, Softacom Company said:

If there is source code, it will take little time to compile them for a new version of Delphi (as practice shows in 90% of cases you just need to add the new compiler version to the inc file)

Usually it is - find something like:


// Delphi 10.4
  {$IFDEF VER340}
    {$DEFINE EC_UNICODE}
    {$DEFINE EC_VCL27}
    {$DEFINE EC_VCL27_UP}
    {$DEFINE EC_DELPHI}
    .....
{$ENDIF}


Copy the code below and add our version of the compiler:


// Delphi 11
 {$IFDEF VER350}
    {$DEFINE EC_UNICODE}
    {$DEFINE EC_VCL27}
    {$DEFINE EC_VCL27_UP}
    {$DEFINE EC_DELPHI}
    .....
{$ENDIF}

 

Better to use CompilerVersion (and RTLVersion) instead, then you don't need to update the defines every time a new version is released, only when you need to add a new define, eg:

{$IF DEFINED(DCC) OR (CompilerVersion < 23)}
  {$DEFINE EC_DELPHI}
{$IFEND}
                              
{$IF CompilerVersion >= 20} // Delphi 2009
  {$DEFINE EC_UNICODE}
{$IFEND}

{$IF CompilerVersion >= 34} // Delphi 10.4
  {$IF CompilerVersion < 35}
    {$DEFINE EC_VCL27}
  {$IFEND}
  {$DEFINE EC_VCL27_UP}
{$IFEND}

{$IF CompilerVersion >= 36} // Delphi 12
   ...
{$IFEND}

 

  • 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

×