Posts

Deleaker

Image
If you have memory problems you should eat more... actually, I have no clue what you should do then. But if you have Delphi memory problems then Deleaker by Softanics can certainly be of assistance.



Deleaker has integration with both Delphi (RAD Studio) and Visual Studio as well as standalone application. It can help you find various types of leaks in Windows applications - memory, GDI, handles in unmanaged and .NET applications.

It has extremely low learning curve and you can start hunting memory leaks immediatelly. Thourough documentation and tutorials make this process even easier. Basically, it offers plug and play experience, something that is not commonly seen in non trivial developer tools.

Hunting down memory leaks of any kind can be tedious and tiresome job, especially when leaks have gone out of control. One of the most usefull options that can help in pinpointing problems faster is Deleaker's ability to easily create memory snapshots while your program is running and co…

Bugs, where art thou?

As you all may already know, Embarcadero recently had some serious server issues. At the moment, most functionality has been restored, but not all of it.

Specifically, a number of bugs is missing from the public RAD Studio Quality Portal If you have reported bugs in the period from June 24 to July 31, you will no longer be able to see those bug reports. However, all those bugs are still in the internal bug tracking system and they are not lost. You don't have to report them again.

They may be brought back to the public JIRA, but when and if that will happen is unknown at the moment.

If they don't resurface in the next month or so, and you have some critical reports you need to track, then you can file those reports again.

Big small update Rio 10.3.2

Image
RAD Studio update 10.3.2 has just been released, packed with new features and improvements; some big, some small.


Big featuresDelphi macOS 64-bitC++17 for Windows 64-bitC++ LSP Code Insight ImprovementsDelphi Linux Client Application Support (recently released for 10.3.1, too) Smaller featuresRAD Server Wizards and Deployment ImprovementsEnhanced Firebase Android Support Enhancements and ImprovementsIDERuntime Library PerformanceVCL QualityiOSC++17 QualityFireMonkeyFireDAC & DatabaseWeb Clients You can find the full list with additional details at http://docwiki.embarcadero.com/RADStudio/Rio/en/10.3_Rio_-_Release_2

For Delphi developers targeting Windows, there are no big features to be thrilled about. But, 10.3.2 brings many smaller fixes and improvements making this update quite worthwhile. If nothing else, a faster IDE alone justifies updating sooner, rather than later.

But don't take my word for it... just go and see for yourself...
Coming up next For me, personally, the m…

May 2019 RAD Studio Roadmap

New Delphi roadmap is live:

https://community.idera.com/developer-tools/b/blog/posts/rad-studio-roadmap-may-2019

https://community.idera.com/developer-tools/b/blog/posts/may-2019-rad-studio-roadmap-commentary-from-product-management

Important highlights 10.3.2 update will bring 64bit macOS support - mid 2019.

10.4 will add 64bit Android support - late 2019.

Android developers on active subscription should keep an eye for 10.4 beta that will start this summer and will come with permission for beta testers to upload 64bit applications on Google Play Store.

Also important notice for all mobile developers from 10.4 memory management will be unified across all platforms, which means ARC compilers will be gone.


Disable Delphi Rio IDE Theme

Image
If you are not big fan of new Delphi IDE (light or dark ones) themes you are out of luck. They are default look and old Windows styled IDE is no longer officially supported.



In previous versions there was checkbox for enabling or disabling IDE themes. In Rio that checkbox is gone and you can only choose between default Light or Dark themes or use custom VCL Style.

But all is not lost. 

You can still disable themes by editing appropriate registry values.

Head to following registry key

Computer\HKEY_CURRENT_USER\Software\Embarcadero\BDS\20.0\Theme

and change following key-value entry:

Key: Enabled
Value: 0

If you wish to enable themes again just change Value back to 1.

Inline Variables Type Inference And Reference Counted Classes

There are two (OK, three) features I have been eagerly waiting for in Delphi.
The ability to have multiple class helpers (aka extension methods) in scopeInline variables and (3.) type inference While I will have to wait some more for the former, Delphi Rio introduced the latter, making me a very happy camper.

But it is not all perfect. Type inference does not work on reference counted classes. Or rather, it does work, but it breaks reference counting.

For example, this inline variable declaration:
var Ref := TInterfacedObject.Create; will be translated by the compiler into:
var Ref: TInterfacedObject := TInterfacedObject.Create;
In the above code, the compiler correctly infers the type - TInterfacedObject, but by doing so, it stores a reference counted object in an object reference. And as we all know, this kind of code breaks the reference counting mechanism. The famous "Don't mix objects and interfaces" rule.

To properly initialize reference counting, you have to expl…

Fixing FireMonkey Heisenbugs

Every once in a while, every developer encounters random bugs that happen only in production and cannot be reproduced at will. If you cannot reproduce it, you can hardly fix it. In such situations, recording exceptions with various error loggers can help us find the culprit and fix the error. However, sometimes the information collected simply does not contain enough data to do so.

This post is inspired by the following Stack Overflow question How to know the exact line number that produce an exception where the logger has recorded an exception and its call stack.

Argument out of range At address: $002CDD4B (Generics.Collections.TListHelper.CheckItemRange(Integer) + 62) Call stack: MyApp $00BB153D Grijjy.Errorreporting.backtrace(Pointer*, Integer) + 8 MyApp $00BB1427 Grijjy.Errorreporting.TgoExceptionReporter.GlobalGetExceptionStackInfo(TExceptionRecord*) + 74 MyApp $001C4D83 Sysutils.Exception.RaisingException(TExceptionRecord*) + 38 MyApp $001E903D Sysutils.RaiseExceptObject(TExcep…