Marco Cantu

Syndicate content
Techie Italian Blogging on Delphi and More
Updated: 16 min 15 sec ago

Delphi and RAD Studio Roadmap Update Published

Tue, 09/19/2017 - 01:03

The article with the new roadmap slides is available at:

https://community.embarcadero.com/article/16563-rad-studio-roadmap-september-2017

The roadmap is updated with the 10.2.1 actual release and the specific 10.2.2 plans, along with the focus areas for 10.3 next year.

Categories: News, Blogs, and Tips

Visiting Delphi Conference in Poland Next Week

Thu, 09/14/2017 - 07:28

On September 21st and 22nd (next Thursday and Friday) I'll be attending and giving sessions at a Delphi conference in Poland. The conference is organized by the local Embarcadero partner, BSC Polska. You can find more information at the "Zlot Programistow Delphi" web site,

http://delphi.pl/zlot/

(Site content is in Polish language, but session descriptions are also in English and several sessions -- those by foreign speakers like myself, Stefan, Primoz -- will be in English).

If you live in Poland, this would be a rather unique opportunity to get a lot of first class Delphi content and meet a few Delphi gurus and one of the product PMs (that is, me). So don't miss the opportunity for a chat, some tech info, and even an interesting evening called "Grill - Delphi and Fun". See you.

 

PS: There are other notable Delphi conferences in Europe next week, The Lab in Netherlands on Sept 19th (https://www.barnsten.com/nl/events/details?events_id=294) and ForenTage on Sept 23rd (and previous days) in Germany (https://forentage.de/). It's the first time in a few years I miss this German user groups conference, but I had a conflicting family event. David Milligton, one of the other RAD Studio PMs, is attending both conferences!

Categories: News, Blogs, and Tips

GetIt Content Update, September 2017

Wed, 09/13/2017 - 06:39

We keep adding a lot of open source libraries, trial components, and now also demos and database connectors to the GetIt package manager. As I wrote a couple of months back, we added also a lot of new categories to simplify navigating among the 241 packages listed today.

What was added over recent months to the GetIt package manager for 10.2 Tokyo?

  • AQTime Standard Embarcadero edition
  • FaceAPI library (for Microsoft Cognitive Services)
  • Grijjy Cloud Logger
  • NexuxDB Free Embedded Version
  • RAD Server Industry Template - Hospitality Survey Application
  • JCL and JVCL updates
  • 3DElite TCP Server-Client Library
  • Additional TMS trial components
  • Many /n Software trial components
  • BrilliantCode trial
  • FmxLinux trial
  • The 80 or so trial versions of CData Enterprise Connectors

More and more components are being added continuously, and we are open to submissions from the community and from partners.

 

Categories: News, Blogs, and Tips

12 Years of Blogging

Fri, 09/08/2017 - 06:42

Today marks the 12th year of my blog, blog.marcocantu.com (now also mirrored on community.embarcadero.com). It is easy for me to remember, as I started the blog on my birthday! And this is my blog post number 1422.

Lots of things happened in this 12 years, but I'm still mostly focused on Delphi, even if in a different role. And if you read the first post (http://blog.marcocantu.com/blog/startingblog.html) you'll see the core engine was written in Kylix -- the ancestor of the newly released Delphi 10.2 Tokyo with Linux support. You can read the 1420 blog posts in between by navigating the full archive at http://blog.marcocantu.com/archives.html.

To capture at a very high level these 12 years, I grabbed all pictures I used in blog post (at least those I uploaded a copy of) and made the collage below (you can expand it for higher resolution). And thanks to those who have been following my blog for these 12 years. Let's have another great year!

Categories: News, Blogs, and Tips

Using Delphi Parse API with Any Parse Server Hosting

Wed, 09/06/2017 - 08:45

The Parse web site (owned by Facebook) was retired earlier this year. This was a fairly popular BaaS (backend as a service) provider for mobile applications, but something you could use also from desktop apps. Delphi (and also C++Builder, btw) has included ready-to-use components for interfacing Parse APIs for quite some time. It was very easy to set up an account on the system and create an app. But the hosting was discontinued, and now what?

Additional Parse Hosting and the Delphi ParseProvider Component

While stopping the Parse web site, Facebook did you positive thing: they made the entire Parse server open source. So what happened is that many cloud hosting providers took that code and created compatible hosting services. By hosting the a fully API-compatible version of the Parse server, these providers made it possible to migrate client applications that were using parse with almost no effort. 

There was one additional issue to use these additional providers from Delphi. Given Parse applications were hosted on parse.com, the main domain name was hard-coded in our component. Now in Delphi Tokyo Release 1 (or 10.2.1) we have added a class helper that lets you easily change the URL provider. As you can read at https://quality.embarcadero.com/browse/RSP-13608 all you need to do is add the line:

ParseProvider1.BaseURL := '...';

In a future release, this will become a property of the component, but to preserve compatibility it was added as a runtime only feature for Tokyo updates.

An Actual Example

To check this does really work I did the following. First I went to one of the Parse server providers that offers a limited free account, https://www.back4app.com/. By entering my credentials, in a minute I could create a test app and manually enter a user on their web console. The console configuration listed all of the parameters needed to connect.

Second I create a VCL forms application, with a ParseProvider component, a BackendUsers component, a button and a memo. In the ParseProvider I copied the various required IDs:

object ParseProvider1: TParseProvider ApplicationID = 'esSv_______Whi' RestApiKey = 'mxBY______Wl6' MasterKey = 'kxW_____DHl' end

The BackendUsers component only configuration is the connection to the provider (which should be automatic). Third step I wrote the following code to refer to the proper URL and get the list of users:

procedure TForm12.FormCreate(Sender: TObject); begin   ParseProvider1.BaseURL := 'https://parseapi.back4app.com/'; end; procedure TForm12.Button1Click(Sender: TObject); var   aJSONArray: TJSOnArray; begin   aJSONArray := TJSOnArray.Create;   try     BackendUsers1.Users.QueryUsers([''], aJSOnArray);     Memo1.Lines.Add (aJSOnArray.ToString);   finally     aJSONArray.Free;   end; end;

You can see the result in the image below (sorry for the scanty UI):

That's all it takes. So you can indeed keep using a Parse Server as a backend for your Delphi desktop and mobile applications, as long as you can find a suitable provider... or you can even self-host the open source version of Parse on your own servers.

Categories: News, Blogs, and Tips

Hotfix for 10.2.1 Inherited VCL Forms Released

Wed, 09/06/2017 - 07:23

This hotfix addresses a bug introduced in RAD Studio 10.2.1 and reported as RSP-18792 in Quality Portal. The issue causes an inherited VCL form to fail to scale on high DPI displays. Actually the fix resolves also a couple of related problems.

The download is available at https://cc.embarcadero.com/item/30798

Notice that even if the changes is for only a few lines of source code, the download is over 80 MB, as we are updating all binary files (DCU, BPL) including that code. The list of files is included in the download page.

Categories: News, Blogs, and Tips

Delphi Blogs of the (Week) Month #55

Fri, 09/01/2017 - 02:21

This is my fairly regular (although now monthly) list of relevant links to blogs post, articles, news, and more from the Delphi community.

Embarcadero Updates

Idera has acquired Sencha to strengthen its developer tools business (aka Embarcadero). You can read the press release (http://www.businesswire.com/news/home/20170825005086/en/IDERA-Acquires-Sencha-Strengthen-Developer-Tools-Business) and articles like http://sdtimes.com/idera-sencha-acquisition-sdtimes.

Embarcadero released a hot fix for Tokyo 10.2.1 to resolve iOS AdHoc deployment: http://blog.marcocantu.com/blog/2017-august-hotfix-adhoc.html

Notable Blog Posts

Save Time With This Quick LiveBindings Trick For Delphi And C++Builder (by Eli): https://community.embarcadero.com/blogs/entry/learn-how-to-quickly-livebind-almost-any-control-with-this-tedit-trick-for-delphi-and-c-builder

Experiments in Uniform Memory Management (by Erik van Bilsen): https://blog.grijjy.com/2017/08/09/experiments-in-uniform-memory-management/

Delphi FMX Chess Game (although I'm eagerly waiting for more information) https://csvelocity.wordpress.com/2017/08/08/delphi-fmx-chess-game/

Cross-Platform Code Hooking (also by Erik van Bilsen): https://blog.grijjy.com/2017/07/26/cross-platform-code-hooking/

Windows Manifest Files (by Vincent Parrett): https://www.finalbuilder.com/resources/blogs/postid/753/windows-manifest-files

TNotifyEvent debouncing in Delphi (by Sergey Zhukov): https://www.code-partners.com/tnotifyevent-debouncing-in-delphi/ (althought it has been criticized as not really being on debouncing, it is an interesting read)

Use C++Builder to get Android current ringtone mode (by Haruyuki Mohri): https://community.embarcadero.com/blogs/entry/use-c-builder-to-get-android-current-ringtone-mode

Resizing a TViewPort3D (by Gustav Schubert): http://federgraph.blogspot.it/2017/08/resizing-t-viewport-3d.html

The Dark Side of Application.ProcessMessages in Delphi Applications (by Zarko Gajic): https://www.thoughtco.com/dark-side-of-application-processmessages-1058203 (re-opening a never ending debate on the use of Windows limited message based parallel processing vs. real threading solutions -- or maybe the debate is actually settled and threads just won?)

Cloud Based Unit Resolver For The Delphi RTL In Delphi 10.2 Tokyo (by FMX Express): http://www.fmxexpress.com/cloud-based-unit-resolver-for-the-delphi-rtl-in-delphi-10-2-tokyo/

Third Party Libraries and Components

Delphi base compatibility, Spine improvements, other stuff in Castle Game Engine (by Michalis): https://castle-engine.sourceforge.io/wp/2017/08/14/delphi-base-compatibility-spine-improvements-other-stuff/

JSKit - open-source Cross-platform JavaScript framework for Delphi and CrossVcl announcement (by Eugene) at https://plus.google.com/u/0/118397897778295642304/posts/ip2wGhNfskd?cfem=1. The library itself can be found at https://github.com/eugenekryukov/jskit

Kind of similarly, ​ScriptGate provides mutual calls between JavaScript and #Delphi and it's useful for Hybrid apps (by Hosokawa Jun): https://bitbucket.org/freeonterminate/scriptgate

GrijjyCloudLogger, remote logging for Windows, iOS, Android, macOS and Linux (by Allen Drennan) at https://blog.grijjy.com/2017/08/22/grijjycloudlogger-remote-logging-for-windows-ios-android-macos-and-linux/. The repository is at https://github.com/grijjy/GrijjyCloudLogger

​Must Have RAD Accessories – InnoSetup (by Craig Chapman): http://chapmanworld.com/2017/08/25/must-have-rad-accessories-innosetup/ (and part of a very nice series of classic Delphi components and tools)

Debugger Callstack Resolver released (by Andreas Hausladen): http://andy.jgknet.de/blog/2017/08/debugger-callstack-resolver-released/

Categories: News, Blogs, and Tips

RAD Studio 10.2.1 HotFix for iOS AdHoc Deployment

Wed, 08/23/2017 - 01:23

We released a hotfix to address a regression (reported as https://quality.embarcadero.com/browse/RSP-18813) in RAD Studio Tokyo Release 1 related with AdHoc deployment for iOS. The fix available for download is at:

https://cc.embarcadero.com/item/30797

The fix (which is a single file to add to your system) provides support for building iOS Ad Hoc Applications with RAD Studio 10.2.1 using Xcode 8.2, 8.3.2 or 8.3.3. Please ensure that RAD Studio 10.2.1 (Tokyo Release 1) is installed before applying this fix, it is not for the original 10.2 release.

Categories: News, Blogs, and Tips

Workaround for FMX Memory Leaks on Windows in 10.2.1

Wed, 08/16/2017 - 01:58

Many of our customers today write FireMonkey Windows applications. We recently got some customer reports on FMX memory leaks on Windows using RAD Studio 10.2 Release 1 (or Tokyo Release 1). The issue is reported at https://quality.embarcadero.com/browse/RSP-18774 and https://stackoverflow.com/questions/45588741/delphi-recompiling-application-with-10-2-1-causes-memory-leaks.

If you encounter such issues after installing 10.2.1, we recommend trying the workaround below. We will address this issue in the future.

To our knowledge, the memory leak doesn't happen during program execution, but on termination because a cleanup thread does not excute in time. Delphi MVP Stefan Glienke suggested a relatively simple workaround both on the Quality Portal bug report and in the StackOverflow page linked above. By calling CheckSynchronize (from System.Classes) you can have the application wait for the cleanup threads to execute. This does a quick sync, but does not cause any noticeable delay. 

There are different places where you can put this code, but the simplest one for me is a finalization block in the main form source code (no need to update the library units). This is an example of the code added to the end of the main form unit, along with activating memory leak reporting:



Another very good suggestion is to change the project file (the .dpr file), but your mileage might vary -- you can also consider fixing the library as this will fix all of your applications at once.

Categories: News, Blogs, and Tips

Creators Update BPL Loading Issue and Tokyo Release 1

Mon, 08/14/2017 - 03:10

As mentioned in the release notes of Tokyo 10.2.1, the latest release of RAD Studio addresses the issues caused by Windows 10 Creators Update and related with DLL and BPL loading. The issue is caused by a change (a bug!) in the DLL loading algorithm of the operating system, an issue that Microsoft has fixed in the new coming release of Windows 10, currently known as Fall Creators Update. I've already covered the problem in a past blog post, http://blog.marcocantu.com/blog/2017-june-delphi-packages-creators-update.html. There is also some discussion on the related Quality Portal bug report at https://quality.embarcadero.com/browse/RSP-17972.

Tokyo Release 1 Fixes the Issue

In this new post I don't want to get back to the technical information already discussed there, but focus on what's changed in Delphi Tokyo Release 1. In short, Embarcadero developers modified the compilers and linkers to emit a single export table section for each BPL, to avoid each section of the export table to cause the operating system to reload the same library once more.

As a experiment, on my primary system (which is running Windows 10 Creators Update) I took a very simple one button VCL application, activated runtime packages (which causes dependencies from the RTL and VCL packages) and started it in the debugger. I used Berlin 10.1.2 and Tokyo 10.2.1 side by side and you can clearly see the difference in the image below:

The Detailed Event Logs

In the detailed log for Tokyo 10.2.1 you can see that some unloading and reloading still happens (unloading is set in bold), but the same can be seen for some Microsoft system DLLs:

Thread Start: Thread ID: 3972. Process ProjectLoad.exe (2964) Process Start: C:\Users\marco\Documents\Embarcadero\Studio\Projects\Win32\Debug\ProjectLoad.exe. Base Address: $00400000. Process ProjectLoad.exe (2964) Module Load: ProjectLoad.exe. Has Debug Info. Base Address: $00400000. Process ProjectLoad.exe (2964) Module Load: ntdll.dll. No Debug Info. Base Address: $76EF0000. Process ProjectLoad.exe (2964) Module Load: KERNEL32.dll. No Debug Info. Base Address: $75320000. Process ProjectLoad.exe (2964) Module Unload: KERNEL32.dll. Process ProjectLoad.exe (2964) Module Load: KERNEL32.dll. No Debug Info. Base Address: $75320000. Process ProjectLoad.exe (2964) Module Load: KERNELBASE.dll. No Debug Info. Base Address: $74DE0000. Process ProjectLoad.exe (2964) Thread Start: Thread ID: 6872. Process ProjectLoad.exe (2964) Thread Start: Thread ID: 12820. Process ProjectLoad.exe (2964) Module Load: vcl250.bpl. Has Debug Info. Base Address: $50A80000. Process ProjectLoad.exe (2964) Module Load: rtl250.bpl. Has Debug Info. Base Address: $00C00000. Process ProjectLoad.exe (2964) Module Unload: rtl250.bpl. Process ProjectLoad.exe (2964) Module Load: SHLWAPI.dll. No Debug Info. Base Address: $75160000. Process ProjectLoad.exe (2964) Module Load: msvcrt.dll. No Debug Info. Base Address: $75DF0000. Process ProjectLoad.exe (2964) Module Load: combase.dll. No Debug Info. Base Address: $75BB0000. Process ProjectLoad.exe (2964) Module Load: ucrtbase.dll. No Debug Info. Base Address: $76200000. Process ProjectLoad.exe (2964) Module Load: RPCRT4.dll. No Debug Info. Base Address: $76C60000. Process ProjectLoad.exe (2964) Module Load: SspiCli.dll. No Debug Info. Base Address: $739C0000. Process ProjectLoad.exe (2964) Module Load: CRYPTBASE.dll. No Debug Info. Base Address: $739B0000. Process ProjectLoad.exe (2964) Module Load: bcryptPrimitives.dll. No Debug Info. Base Address: $750F0000. Process ProjectLoad.exe (2964) Thread Start: Thread ID: 1944. Process ProjectLoad.exe (2964) Module Load: SECHOST.dll. No Debug Info. Base Address: $755C0000. Process ProjectLoad.exe (2964) Module Load: GDI32.dll. No Debug Info. Base Address: $76DD0000. Process ProjectLoad.exe (2964) Module Load: gdi32full.dll. No Debug Info. Base Address: $76AC0000. Process ProjectLoad.exe (2964) Module Load: msvcp_win.dll. No Debug Info. Base Address: $753F0000. Process ProjectLoad.exe (2964) Module Load: USER32.dll. No Debug Info. Base Address: $74FB0000. Process ProjectLoad.exe (2964) Module Load: win32u.dll. No Debug Info. Base Address: $76060000. Process ProjectLoad.exe (2964) Module Load: COMDLG32.dll. No Debug Info. Base Address: $75AC0000. Process ProjectLoad.exe (2964) Module Load: SHCORE.dll. No Debug Info. Base Address: $76E60000. Process ProjectLoad.exe (2964) Module Load: WINSPOOL.DRV. No Debug Info. Base Address: $66030000. Process ProjectLoad.exe (2964) Module Load: SHELL32.dll. No Debug Info. Base Address: $73A90000. Process ProjectLoad.exe (2964) Module Load: bcrypt.dll. No Debug Info. Base Address: $72990000. Process ProjectLoad.exe (2964) Module Load: COMCTL32.dll. No Debug Info. Base Address: $6EF40000. Process ProjectLoad.exe (2964) Module Load: CFGMGR32.dll. No Debug Info. Base Address: $76020000. Process ProjectLoad.exe (2964) Module Load: Windows.Storage.dll. No Debug Info. Base Address: $76530000. Process ProjectLoad.exe (2964) Module Load: ADVAPI32.dll. No Debug Info. Base Address: $75230000. Process ProjectLoad.exe (2964) Module Load: AppCore.dll. No Debug Info. Base Address: $75310000. Process ProjectLoad.exe (2964) Module Load: POWRPROF.dll. No Debug Info. Base Address: $73A40000. Process ProjectLoad.exe (2964) Module Load: profapi.dll. No Debug Info. Base Address: $75150000. Process ProjectLoad.exe (2964) Module Load: OLEAUT32.dll. No Debug Info. Base Address: $76D20000. Process ProjectLoad.exe (2964) Module Load: ole32.dll. No Debug Info. Base Address: $760D0000. Process ProjectLoad.exe (2964) Module Load: oledlg.dll. No Debug Info. Base Address: $63220000. Process ProjectLoad.exe (2964) Module Load: rtl250.bpl. Has Debug Info. Base Address: $00D00000. Process ProjectLoad.exe (2964) Module Unload: rtl250.bpl. Process ProjectLoad.exe (2964) Module Load: rtl250.bpl. Has Debug Info. Base Address: $00D00000. Process ProjectLoad.exe (2964) Module Load: WS2_32.dll. No Debug Info. Base Address: $751C0000. Process ProjectLoad.exe (2964) Module Load: MPR.dll. No Debug Info. Base Address: $72B60000. Process ProjectLoad.exe (2964) Module Load: imagehlp.dll. No Debug Info. Base Address: $76C30000. Process ProjectLoad.exe (2964) Module Load: OLEACC.dll. No Debug Info. Base Address: $65270000. Process ProjectLoad.exe (2964) Module Load: OPENGL32.dll. No Debug Info. Base Address: $6E800000. Process ProjectLoad.exe (2964) Module Load: VERSION.dll. No Debug Info. Base Address: $73940000. Process ProjectLoad.exe (2964) Module Load: NETAPI32.dll. No Debug Info. Base Address: $71B10000. Process ProjectLoad.exe (2964) Module Load: WINHTTP.dll. No Debug Info. Base Address: $72AB0000. Process ProjectLoad.exe (2964) Module Load: SHFOLDER.dll. No Debug Info. Base Address: $73100000. Process ProjectLoad.exe (2964) Module Load: WSOCK32.dll. No Debug Info. Base Address: $729B0000. Process ProjectLoad.exe (2964) Module Load: GLU32.dll. No Debug Info. Base Address: $6FAA0000. Process ProjectLoad.exe (2964) Module Load: netutils.dll. No Debug Info. Base Address: $70000000. Process ProjectLoad.exe (2964) Module Load: IMM32.dll. No Debug Info. Base Address: $761D0000. Process ProjectLoad.exe (2964) Module Load: MSCTF.dll. No Debug Info. Base Address: $75470000. Process ProjectLoad.exe (2964) Module Load: UxTheme.dll. No Debug Info. Base Address: $6CBE0000. Process ProjectLoad.exe (2964) Module Load: dwmapi.dll. No Debug Info. Base Address: $6AD20000. Process ProjectLoad.exe (2964) Module Load: WTSAPI32.dll. No Debug Info. Base Address: $66E80000. Process ProjectLoad.exe (2964) Module Load: WINSTA.dll. No Debug Info. Base Address: $68D20000. Process ProjectLoad.exe (2964) Module Load: TextInputFramework.dll. No Debug Info. Base Address: $6D180000. Process ProjectLoad.exe (2964) Module Load: CoreMessaging.dll. No Debug Info. Base Address: $6CEC0000. Process ProjectLoad.exe (2964) Module Load: CoreUIComponents.dll. No Debug Info. Base Address: $6CF50000. Process ProjectLoad.exe (2964) Module Load: WinTypes.dll. No Debug Info. Base Address: $6FBE0000. Process ProjectLoad.exe (2964) Module Load: NTMARTA.dll. No Debug Info. Base Address: $71F10000. Process ProjectLoad.exe (2964) Module Load: USERMGRCLI.dll. No Debug Info. Base Address: $6CEB0000. Process ProjectLoad.exe (2964)

Compare the log above to the same for an application compiled with Berlin 10.1.2:

Thread Start: Thread ID: 3512. Process Project14.exe (6928) Process Start: C:\Users\marco\Documents\Embarcadero\Studio\Projects\Win32\Debug\Project14.exe. Base Address: $00400000. Process Project14.exe (6928) Module Load: Project14.exe. Has Debug Info. Base Address: $00400000. Process Project14.exe (6928) Module Load: ntdll.dll. No Debug Info. Base Address: $76EF0000. Process Project14.exe (6928) Module Load: KERNEL32.dll. No Debug Info. Base Address: $75320000. Process Project14.exe (6928) Module Unload: KERNEL32.dll. Process Project14.exe (6928) Module Load: KERNEL32.dll. No Debug Info. Base Address: $75320000. Process Project14.exe (6928) Module Load: KERNELBASE.dll. No Debug Info. Base Address: $74DE0000. Process Project14.exe (6928) Thread Start: Thread ID: 872. Process Project14.exe (6928) Thread Start: Thread ID: 12124. Process Project14.exe (6928) Thread Start: Thread ID: 5136. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $02160000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $02B80000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $02160000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: vcl240.bpl. Has Debug Info. Base Address: $50A70000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Load: USER32.dll. No Debug Info. Base Address: $74FB0000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: win32u.dll. No Debug Info. Base Address: $76060000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: GDI32.dll. No Debug Info. Base Address: $76DD0000. Process Project14.exe (6928) Module Load: gdi32full.dll. No Debug Info. Base Address: $76AC0000. Process Project14.exe (6928) Module Load: msvcp_win.dll. No Debug Info. Base Address: $753F0000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: ucrtbase.dll. No Debug Info. Base Address: $76200000. Process Project14.exe (6928) Module Load: ADVAPI32.dll. No Debug Info. Base Address: $75230000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: msvcrt.dll. No Debug Info. Base Address: $75DF0000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: SECHOST.dll. No Debug Info. Base Address: $755C0000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: RPCRT4.dll. No Debug Info. Base Address: $76C60000. Process Project14.exe (6928) Module Load: SspiCli.dll. No Debug Info. Base Address: $739C0000. Process Project14.exe (6928) Module Load: CRYPTBASE.dll. No Debug Info. Base Address: $739B0000. Process Project14.exe (6928) Module Load: bcryptPrimitives.dll. No Debug Info. Base Address: $750F0000. Process Project14.exe (6928) Module Load: SHLWAPI.dll. No Debug Info. Base Address: $75160000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Load: combase.dll. No Debug Info. Base Address: $75BB0000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: OLEAUT32.dll. No Debug Info. Base Address: $76D20000. Process Project14.exe (6928) Module Load: ole32.dll. No Debug Info. Base Address: $760D0000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: SHELL32.dll. No Debug Info. Base Address: $73A90000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: CFGMGR32.dll. No Debug Info. Base Address: $76020000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: SHCORE.dll. No Debug Info. Base Address: $76E60000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: Windows.Storage.dll. No Debug Info. Base Address: $76530000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: AppCore.dll. No Debug Info. Base Address: $75310000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: POWRPROF.dll. No Debug Info. Base Address: $73A40000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: profapi.dll. No Debug Info. Base Address: $75150000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Load: COMDLG32.dll. No Debug Info. Base Address: $75AC0000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $02160000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: COMCTL32.dll. No Debug Info. Base Address: $6EF40000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $02160000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: WINSPOOL.DRV. No Debug Info. Base Address: $00930000. Process Project14.exe (6928) Module Unload: WINSPOOL.DRV. Process Project14.exe (6928) Module Load: WINSPOOL.DRV. No Debug Info. Base Address: $66030000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: oledlg.dll. No Debug Info. Base Address: $63220000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $02160000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $02160000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: bcrypt.dll. No Debug Info. Base Address: $72990000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $01740000. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Unload: rtl240.bpl. Process Project14.exe (6928) Module Load: rtl240.bpl. Has Debug Info. Base Address: $00D20000. Process Project14.exe (6928) Module Load: imagehlp.dll. No Debug Info. Base Address: $76C30000. Process Project14.exe (6928) Module Load: WS2_32.dll. No Debug Info. Base Address: $751C0000. Process Project14.exe (6928) Module Load: VERSION.dll. No Debug Info. Base Address: $73940000. Process Project14.exe (6928) Module Load: MPR.dll. No Debug Info. Base Address: $72B60000. Process Project14.exe (6928) Module Load: SHFOLDER.dll. No Debug Info. Base Address: $73100000. Process Project14.exe (6928) Module Load: NETAPI32.dll. No Debug Info. Base Address: $71B10000. Process Project14.exe (6928) Module Load: WSOCK32.dll. No Debug Info. Base Address: $729B0000. Process Project14.exe (6928) Module Load: OPENGL32.dll. No Debug Info. Base Address: $6E800000. Process Project14.exe (6928) Module Load: OLEACC.dll. No Debug Info. Base Address: $65270000. Process Project14.exe (6928) Module Load: WINHTTP.dll. No Debug Info. Base Address: $72AB0000. Process Project14.exe (6928) Module Load: GLU32.dll. No Debug Info. Base Address: $6FAA0000. Process Project14.exe (6928) Module Load: IMM32.dll. No Debug Info. Base Address: $761D0000. Process Project14.exe (6928) Module Load: wkscli.dll. No Debug Info. Base Address: $73190000. Process Project14.exe (6928) Module Load: CSCAPI.dll. No Debug Info. Base Address: $6FA70000. Process Project14.exe (6928) Module Load: MSCTF.dll. No Debug Info. Base Address: $75470000. Process Project14.exe (6928) Module Load: UxTheme.dll. No Debug Info. Base Address: $6CBE0000. Process Project14.exe (6928) Module Load: dwmapi.dll. No Debug Info. Base Address: $6AD20000. Process Project14.exe (6928) Module Load: WTSAPI32.dll. No Debug Info. Base Address: $66E80000. Process Project14.exe (6928) Module Load: WINSTA.dll. No Debug Info. Base Address: $68D20000. Process Project14.exe (6928) Rebuilding Your Project Might not Be Enough

So if you have an application that uses runtime package in Tokyo on Creators Update, do you just need to rebuild it to have it load faster and be able to debug more smoothly? If you are only using runtime packages that come with RAD Studio, rebuilding is enough as the runtime package that ship with 10.2.1 have been re-compiled. If you are using additional packages of your own or for which you have the source code, you'll need to recompile also those packages -- even if they are binary compatible and would work. If you are using third party packages you don't have the source code for, you need to ask the third party vendor for a new version build with the compiler in Tokyo Release 1.

Conclusion: Can We Ask Microsoft for a Fix?

Needless to say, this compiler change shouldn't have been needed, would Microsoft had fixed the issue the introduced timely. Given how many users are affected, this should have been expected. Maybe there is still time to insist with Microsoft to release the fix they did for a future version to the current version of Windows... given how hard it is to skip a release these days.

All we at Embarcadero could do was to apply a "workaround" to the most recent release, Tokyo. We are considering providing the same fix for older versions like Berlin and Seattle -- although again this will require a large update from us and also a new build of all third party packages! 

 

Categories: News, Blogs, and Tips

Quality Portal and Tokyo Release 1

Fri, 08/11/2017 - 04:05

The RAD Studio 10.2.1 release (earlier this week) was focused on bug fixing. You can find the list of issues that have been addressed at http://edn.embarcadero.com/article/44763. The list includes 186 customer reported issues there were either fixed or cannot be reproduced any more -- so they also got fix, even if "indirectly" (that is, while fixing some related bug). If we include also duplicate items, expected behavior, and issues we decided not to fix (for some reason) or are not applicable any more, the total of Quality Portal bugs closed is 241.

This list of bugs and these counts don't include bugs reported internally and closed. All bugs touched by the release are 402 (including all resolutions). While there are a few relevant issues not handled (and we are evaluating how and when to release a fix for those) and a few only partially done (we opened a Phase 2 bug for Android performance) a lot if the issues that were resolved improve support of the latest versions of iOS and Xcode, Creators Update (with BPL loading -- more on this in a separate blog post) and Android performance and quality (including the June hot fix).

If we look at the overall status, this is the 30 days status (captured today):

Having pushed out a release, this is very favorable. This is the more realistic 365 days (1 year) status report (this includes bugs only, not feature requests):

What the graph tells is that we need to (literally) double our effort to address bugs and improve the product quality, but both Tokyo and Tokyo Release 1 made a good dent.

The last thing I want to draw your attention to is the list of most voted issues before Release 1:

We did address many of the issues with the highest number of votes in that list:

- Non-functional debugger with Creators Update (which is by itself a Windows issue)

- Android Tokyo app are super slow (data is in the report, but we need to and will do more to address this)

- StringToJString leak

- iOS 10.3

Among those left open, the Chinese VK is very tricky (and regional), IDE DPI awareness is bordering a feature request and something we are making steps towards (we did fix a few more HighDPI VCL issues in Tokyo Release 1) and the C++ linkers issue was addressed, at least in part (we are making more tests and might officially close it).

RAD Studio and Delphi and C++Builder customers keep pushing us to focus more on quality. Over the last couple of years QPS (Quality, Performance, Stability) was and still is today a top priority in our development effort. Some new features like Linux support were really important, therefore we need to keep striking a good balance between features, quality, and bug fixing. But quality is key.

Categories: News, Blogs, and Tips

Delphi Tokyo Release 1 or 10.2.1 is Now Available

Tue, 08/08/2017 - 04:03

You can read more about the release and its rationale in the PM article published in the community:

https://community.embarcadero.com/article/16556-rad-studio-10-2-1-released-today

For the actual release information docWiki page, including how to obtain the release, what's new, known issues, visit:

http://docwiki.embarcadero.com/RADStudio/Tokyo/en/10.2_Tokyo_-_Release_1

For a more detailed of issues fixed in this release, see the EDN article at:

http://edn.embarcadero.com/article/44763

We had to put a significant effort into some of the issues, like those caused by Creators Update and changes in iOS, so very happy to make this new version of Delphi and C++ Builder available to our customers. 

Categories: News, Blogs, and Tips

Some Data from the 2017 RAD Studio Developers Survey

Thu, 07/27/2017 - 01:42

As most of you know, the Embarcadero PM team has been running fairly extensive yearly surveys regularly. We had the last yearly survey in April 2017. In the past, the company decision has been not to share data coming from the survey, as some of it is fairly sensitive in terms of business analysis and planning. But given that not all of the information fits into this category, this year Embarcadero has decided to share some of the results of the main yearly developer's survey -- that saw several thousand people taking the time and effort to go over almost 100 questions. We plan on sharing some more information in the future, in blog posts focused on specific product features.

RAD Studio Versions Owned

One interesting question we ask our customer is to indicate not only which is the last version they own or are using, but also list all of the versions they owned. This is not historical data, as it depends on developers who took this year survey. A lot of the current customers have been using the product for a long time, but not all versions have been equally successful:

General Information Channels

Another question we want to share the answer for is which online outlets developers go to get information and learn about the product. Notice this was a question allowing multiple answers. This is the list in order of preference (from most popular to least popular), of the group of sites that got over a thousand votes:

1. Stack Overflow

2. Embarcadero Website

3. Embarcadero Community (community.embarcadero.com)

4. Embarcadero Webinars

5. Old forum (forums.embarcadero.com)

6. MVP and Other User's Blogs

7. Quality Portal (quality.embarcadero.com)

These are additional sites and information channels that received less than a thousand votes, again listed from most to least popular

8. User groups and local community forums

9. Country specific developers forums

10. Google+ Delphi Community

11. Live "in person" events

12. Facebook

13. Twitter

Appears our customers are not really social media fanatics, with the limited exception of the Google+ community.

Most Relevant Development Scenarios

These are the key focus areas our customers, in terms of product use. This is another question allowing multiple answers, and the 4 most popular were:

1. Windows VCL Desktop clients

2. FMX/mobile clients

3. FMX/desktop clients

4. JSON/REST Web Services

Building Windows VCL applications clearly remains an important focus for the largest majority of our customers, with over 90% of the survey respondents indicating VCL is relevant to their work.

Developers Revenues Tied to the use of RAD Studio

There is clearly a very varied group of developers using Delphi, C++Builder and RAD Studio, and one way to highlight it is to look at the revenues from using our products developers declared in the survey (and we hope they were honest!). From a 25% of customers not making any money or making less than 1,000 dollars a year, to a few claiming businesses over 100 million dollars!



Other Programming Languages Used

Besides Delphi and C++ languages, most of the developers using RAD Studio use other development tools and programming languages alongside. Among the other popular languages, this year JavaScript surpassed C#. This is the list from most to least popular:

1. JavaScript

2. C#

3. PHP

4. C

5. Java

6. Python

7. VB

8. VB.NET

9. Objective-C

Of course, most of these languages are used with other IDE and editors, the two most popular being:

1. Visual Studio

2. Notepad++

Target Desktop and Mobile OSes

Among the operating systems RAD Studio developers build software for, we have two separate questions, focused on desktop and mobile operating systems, with Windows and Android clearly leading the two groups. The versions break out is fairly interesting, with Windows XP still significantly high (even if decreasing a lot since the last survey).

On the mobile front, data is more or less as expected, with iOS receiving much more focus than its installed user base numbers and the "Other" category significantly dropping from past surveys.

Version Control

Which version control are RAD Studio developers using? I found it worrisome that the second most used VCS is "none" -- at about 30% of the total! Come on, even for a single developer on simple projects, not using a version control system is hard to justify these days:

1. Subversion

2. No Version Control System

3. Git

4. Microsoft's TFS

5. Other

Cloud Services

Another question we asked was about cloud services developers use. This is the list in order from the most popular of the top picks, although there is a mix of real cloud services and file system services:

1. Amazon Web Services (growing from previous year)

2. DropBox

3. Windows Azure (growing from previous year)

4. Google Drive

5. Google Docs

Commonly used Database Engines

Another very interesting question is about the most popular databases among the developers using RAD Studio. No big surprise and very stable over time (with the exception of a huge growth of MariaDB -- a database we already started supporting natively in FireDAC). This is our top ten for relational databases, again starting with the most popular:

1. Microsoft SQL Server

2. MySQL

3. SQLite

4. Firebird

5. Oracle

6. PostgreSQL

7. Access

8. InterBase

9. MariaDB

10. IBLite / IBToGo

The top pick for NoSQL engines remains MongoDB, but the second one, Redis, is a new entry -- all other trailing with only a handful of votes.

Conclusion

Our yearly developers survey provides us with a lot of useful data we use for our planning and product directions. While we cannot share all of it, there is data relevant for the community at large we started covering in this blog posts and we are more than happy to discuss in public. I'll also cover Delphi language requests and other product areas in future blog posts. Stay tuned.

Categories: News, Blogs, and Tips

Delphi Blogs of the Week #54

Fri, 07/21/2017 - 08:00

A new round up of Delphi-related news, after my two weeks of vacation around Europe.

Delphi Product Blogs and More

Quickly find add-ons with new GetIt categories by Sarina at https://community.embarcadero.com/blogs/entry/quickly-find-add-ons-with-new-getit-categories (by the way, we are open for ideas and suggestions, given the system is now fairly flexible)

The Enterprise Connector Beta has started by Sarina at https://community.embarcadero.com/blogs/entry/the-enterprise-connector-beta-has-started

Viewing Salesforce Data in RAD Studio Data Explorer by Sarina at https://community.embarcadero.com/article/16541-viewing-salesforce-data-in-rad-studio-data-explorer

#FireMonkey RAD Studio Overview Download Link: http://forms.embarcadero.com/sFireMonkeyRADStudioOverview

Targeting Chrome OS with Delphi via Android and Linux by Jim McKeeth at https://community.embarcadero.com/blogs/entry/targeting-chrome-os-with-delphi-via-android-and-linux

Notable Blog Posts

Send an Email with an Attachment in iOS, Android, and Windows using RAD Studio by Roy Woll at https://www.woll2woll.com/single-post/2017/04/24/Send-an-Email-with-an-Attachment-FireMonkey

ScannerMApp: a QR/barcode scanner app with Delphi, ZXing and TFrameStand by Andrewa Magni at https://blog.andreamagni.eu/2017/06/scannermapp-a-qrbarcode-scanner-app-with-delphi-zxing-and-tframestand/

Using Google Sign-In for Firebase SDK on Android by Allen Drennan at https://blog.grijjy.com/2017/07/20/using-google-sign-in-for-firebase-sdk-on-android/

SIMD Assembly Optimization by Erik van Bilsen at https://blog.grijjy.com/2017/07/10/simd-assembly-optimization/

Building a (real) Linux daemon with Delphi - Part 1 by Paolo Rossi at http://blog.paolorossi.net/2017/07/11/building-a-real-linux-daemon-with-delphi-part-1-2/

4 Years at Embarcadero Technologies by Jim at http://delphi.org/2017/07/4-years-at-embarcadero/

Encode JSON to a FireDAC Memory Table without REST Request by Craig at http://chapmanworld.com/2017/07/07/encode-json-to-a-firedac-memory-table-without-rest-request/

Stay tunes for more news.

Categories: News, Blogs, and Tips

Delphi Blogs of the (Week) Month #53

Thu, 06/29/2017 - 04:08
Embarcadero News

Embarcadero Partners with CData to Offer Enterprise Connectors (press release at http://www.businesswire.com/news/home/20170621005319/en). You can read more on this blog post from Sarina, https://community.embarcadero.com/blogs/entry/new-enterprise-connectors-for-delphi-and-c-builder-join-the-beta. The beta of the components can be found in GetIt for Tokyo customers (Professional and above), in a new "Connectors" category. You can use them to connect with over 70 different business, enterprise and social web services. Very nicely integrated with FireDAC and the IDE.

A patch for Tokyo focused on Android is available, http://blog.marcocantu.com/blog/2017-june-102-android-patch.html

Books, books!

Cary Jensen has a new FireDAC book out. See the announcement at http://caryjensen.blogspot.it/2017/05/delphi-in-depth-firedac-is-now-available.html and a review by Stephen at https://community.embarcadero.com/blogs/entry/firedac-book-using-interbase.

Dalija has a new book project focused on Delphi Memory Management, as you can read at https://plus.google.com/u/0/+DalijaPrasnikar/posts/Kkund4GXpXv and https://plus.google.com/+DalijaPrasnikar/posts/CbEnZdx6fNY.

Blog Posts

Visualize JSON using TTreeView at https://community.embarcadero.com/blogs/entry/visualize-json-using-ttreeview

New FireDAC Database Status Page at https://community.embarcadero.com/blogs/entry/new-firedac-database-status-page

Using the Google Cloud Platform APIs at http://​https://blog.grijjy.com/2017/01/13/using-the-google-cloud-platform-apis/

FireMonkey and VCL Style Packs from DelphiStyles.com at https://community.embarcadero.com/blogs/entry/fmx-and-vcl-style-packs-from-delphistyles-com

Third Party Tools

MIDAS dropbox library at http://www.midaconverter.com/dropbox.html

PasLibVlc - use VideoLAN player in Delphi at http://prog.olsztyn.pl/paslibvlc/

The Light End

Delphi developers use spaces, right? https://stackoverflow.blog/2017/06/15/developers-use-spaces-make-money-use-tabs/

Categories: News, Blogs, and Tips

RAD Studio 10.2 Patch for Android Released

Mon, 06/26/2017 - 02:33

As Sarina already mentioned in the community site, last week Embarcadero released a second patch for Delphi and C++Builder 10.2 Tokyo. The first patch was focused on tool chain issues, while this new one addresses several issues for Android platform support. Namely, some of the fixes relate with the platform changes in editing (causing problems when using the backspace key) while other address regressions (and performance issues) introduced in 10.2 Tokyo and caused by platform changes in threading support.

You can find a list of open Quality Portal issues the patch addresses in the download page at https://cc.embarcadero.com/item/30781. This patch is available also for trial customers.

The matching source code is available only for registered users at https://cc.embarcadero.com/item/30782. Notice that the source code includes changes that affect multiple platforms, but we haven't released the updated DCU files for those other platforms. In other words, PAS and DCU will most likely be out of synch either with or without the source code patch, depending on the target platform, and you should consider enabling this new source code for Android specific projects or using it as reference only.

We know this is no ideal and this patch is intended as a temporary solution, while we complete and test a full update of the product, including all internal fixes and all platforms.

Categories: News, Blogs, and Tips

Celebrating 22 Exciting Years of Innovation with Delphi

Thu, 06/22/2017 - 02:56

Delphi was released over 22 years ago in San Francisco. More than two decades later, the Delphi design philosophy remains steadfastly the same: continual innovation and increasing productivity for developers. Throughout its history, Delphi has been one of the most successful development platforms as it continues to navigate a highly competitive space, maintain its essence as a robust integrative toolset, and serve a large community of passionate developers. Deep investments have been made in the product over the years to migrate Delphi from a Windows-centric product to a multi-device development tool supporting the five most popular operating systems: Windows, macOS, iOS, Android, and Linux.

Global Reach

Delphi developers can be found in virtually every corner of the world, and this is why a city moniker designates each of the 10.x versions to celebrate the diverse global reach and significant contributions that Delphi is making today. Since VCL has been the best object-oriented library Windows API wrapping for over 20 years, Seattle was chosen first (to honor the city near Microsoft headquarters). Next, the Berlin release acknowledged the strong developer community and partner network presence that Delphi has -- not only in Germany, but throughout all of Europe. Most recently, the Tokyo release recognizes the proud and growing community in Japan.

Tokyo Release: Running on Linux

Delphi has long had amazing support for multi-tier and server-side development on Windows. The 10.2 Tokyo release extends all of that support to the Linux operating system. This includes support for WebBroker, WebServices, DataSnap, and the new EMS modules for RAD Server. This means that many of your existing RAD Server/Windows server applications will migrate quite easily over to Linux. Only a few changes are necessary in a typical migration, thanks to the cross-platform FireDAC support. FireDAC works on both Windows and Linux to give you unparalleled access to your favorite databases. 

There's more. Gather up all of your Apache or IIS modules, your REST backend services, your Windows services, or any other server-side or console application, and easily migrate those app components from Windows to Linux.

New features continue to drive strong innovation

If you've not taken a close look lately, it's time to reacquaint yourself with the newer release of Delphi and explore some truly amazing features. These are only a few:

  • Live Preview - Let's say that you're designing an app, and you want to see how it looks on an iOS or Android device. As you work in the Form Designer, simply click a button to see your app in the Live Preview feature of Delphi -- in proper scale and clear definition. There's no need to plug in your device, and you can easily and repeatedly preview the app in either device format as you continue your development work.

  • App Tethering - Maybe you've built a desktop app, and you're also building a mobile companion app. How should these apps talk to each other? App tethering makes it very easy to connect any app on any platform to an app on any other platform -- including Mac-to-Windows, Android-to-Mac, iOS-to-Windows, and so on.

  • Parallel Programming Library - High-level, easy usable, and quick parallelization. It's the holy grail, and it's an integral part of Delphi.

  • Desktop Bridge - Need to get your desktop app into the Windows Store? Simply rebuild, since the Windows Store is available as a build target (just like any other target). No need to mess with the tedium that you may have heard about in other development platforms. We build easy-to-use, straightforward systems. And Delphi is flat-out easy.

Delphi Language Evolution -- Forever Young and Growing

The Delphi language is very powerful. Yet simple, expressive, and easily readable. Excellent for a student and yet solid and robust for the most adept professionals. It is a rich  language that is ready for the future, while retaining its solid roots of the past. The language has a long history, remains dynamic in the present, and we are certain of a brilliant future ahead. Delphi is a multi-faceted language, combining the power of object-oriented programming, advanced support for generic programming, and dynamic constructs-like attributes. And yet, for those who prefer it, full support remains for conventional procedural programming. Delphi is a tool for all trades -- with a variety of compilers and development tools that fully embrace the mobile era.

How broad is the range of the Delphi language? You name it. Desktop apps, client-server applications, massive web server modules, middleware, office automation, apps for the latest phones and tablets, industrial automation systems, and Internet virtual phone networks. These are some of the many real-world uses for Delphi.

The Delphi language, also known as Object Pascal, is a modern type-checked and object-oriented language, featuring single-inheritance and an object reference model (similar to Java and C#). Over the years, the language has grown to include records with methods, operator overloading for records, class data, nested types, sealed classes, final methods, and class helpers.

Beyond the classic OOP features, the Delphi language has gained support for generic data types and collections, anonymous methods (or closures), reflection, and attributes -- along with an extremely rich RTTI and component streaming support architecture. Part of modernizing the language was its transition towards Unicode strings as native types and the use of the ARC (Automatic Reference Counting) memory model on mobile platforms.

In terms of features, the Delphi language has no reason to envy to other more popular programming languages. Delphi is happy retaining its distinctive characteristics, its readability, and its flexibility through such a wide variety of the programming paradigms it supports.

Building a Future Together

Developers are absolutely essential to the future, in which technology will be ever more integral to everything we do. The success of Delphi is largely attributable to its community of passionate developers -- a community that cherishes the elegance and simplicity of the language, but also its ability to create powerful applications with ease and speed.

To learn more about the history of Delphi and today's landscape, read our 55-page booklet at http://online.flowpaper.com/79e6075d/Delphi22Magazine/. Enjoy.

Categories: News, Blogs, and Tips

Pictures from Italian Delphi Day last week

Mon, 06/19/2017 - 09:23

Last week I was at a large Italian conference (with almost 100 Delphi developers attending) in my city. I gave a keynote on the status and future of Delphi, and there were many other sessions given by Italian Delphi developers and some international experts (including Stefan, Dmitry, and Yuriy). See the conference site www.delphiday.it for more information and the program.

I was able to meet and talk with many attendees, several of which I've known for years, but I was also happy to find some very young developers in the audience. Here there are a few pictures (some I took and some shared by Paolo Rossi and Marco Breveglieri on social media):

Nice conference. Now I have a fairly long break, I'll be back speaking in public after the summer.

Categories: News, Blogs, and Tips

The Issue with Delphi Runtime Packages and Windows 10 Creators Update

Mon, 06/12/2017 - 10:01

Since Windows 10 Creators Update was released two months ago, we have started seeing reports of issues with runtime package (for example, https://quality.embarcadero.com/browse/ RSP-17972, where myself, Embarcadero support and R&D have chimed in), mostly while debugging applications. The issue is affecting applications that use runtime packages (BPL), not applications compiled as a single executable. In general terms, the problem affects all applications that use runtime packages, built with any version of Delphi (recent, old, or even the early ones). In most cases, the slowdown for end user application is relatively limited, however applications with runtime packages on network shares are affected. But what is happening?

The Core Issue: Optimized DLL Loading

Let's start with some background information. On the Windows operating system, dynamic linking (DLLs) support both load-time binding and full runtime binding (LoadLibrary). In both cases, when the DLL is generated it is has a table of entry points (export table). Any other library or executable referring to it has an import table referring to functions of that export table. Since the early days, when the Delphi compiler (and linker) generate a DLL or package library (BPL) by assembling multiple units in a single binary file, and do so by making functions and methods available by creating multiple sections in the export/import table. This was likely a minor linker optimization, and never had a real side effect.

Fast forward to Windows 10 Creators Update. Microsoft decided to rewrite the DLL loading code to make it parallel (different threads can load different libraries in parallel) to optimize applications loading. However this change has ended up affecting the loading of libraries with multiple sections in the export tables. Empirically, it looks like a BPL is loaded once for each segment. Now consider that most of the core Delphi BPL (rtl, vcl, fmx) have dozens and dozens of sections, and the result is libraries are loaded (and unloaded) dozens and dozens of times.

Here is a screenshot of the effect in the Event log (this is a single form FMX application):

While in this simple application on my machine it takes a couple of extra seconds, with larger applications having many runtime packages the effect on the debugger can be fairly extreme. Here is the full debugger log, with operations on packages (and other notable ones) marked in bold:

Thread Start: Thread ID: 12052. Process Project13.exe (13088) Process Start: C:\Users\marco\Documents\Embarcadero\Studio\Projects\Win32\Debug\Project13.exe. Base Address: $00400000. Process Project13.exe (13088) Module Load: Project13.exe. Has Debug Info. Base Address: $00400000. Process Project13.exe (13088) Module Load: ntdll.dll. No Debug Info. Base Address: $76F40000. Process Project13.exe (13088) Module Load: KERNEL32.dll. No Debug Info. Base Address: $74520000. Process Project13.exe (13088) Module Unload: KERNEL32.dll. Process Project13.exe (13088) Module Load: KERNEL32.dll. No Debug Info. Base Address: $74520000. Process Project13.exe (13088) Module Load: KERNELBASE.dll. No Debug Info. Base Address: $73B80000. Process Project13.exe (13088) Thread Start: Thread ID: 14596. Process Project13.exe (13088) Thread Start: Thread ID: 2688. Process Project13.exe (13088) Thread Start: Thread ID: 2076. Process Project13.exe (13088) Module Load: rtl250.bpl. Has Debug Info. Base Address: $50050000. Process Project13.exe (13088) Module Load: rtl250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Load: rtl250.bpl. Has Debug Info. Base Address: $01740000. Process Project13.exe (13088) Module Load: rtl250.bpl. Has Debug Info. Base Address: $02170000. Process Project13.exe (13088) Module Unload: rtl250.bpl. Process Project13.exe (13088) Module Unload: rtl250.bpl. Process Project13.exe (13088) Module Unload: rtl250.bpl. Process Project13.exe (13088) Module Load: OLEAUT32.dll. No Debug Info. Base Address: $74980000. Process Project13.exe (13088) Module Load: msvcp_win.dll. No Debug Info. Base Address: $76130000. Process Project13.exe (13088) Module Load: ucrtbase.dll. No Debug Info. Base Address: $743A0000. Process Project13.exe (13088) Module Load: combase.dll. No Debug Info. Base Address: $75EA0000. Process Project13.exe (13088) Module Load: RPCRT4.dll. No Debug Info. Base Address: $73A30000. Process Project13.exe (13088) Module Load: SspiCli.dll. No Debug Info. Base Address: $73A10000. Process Project13.exe (13088) Module Load: CRYPTBASE.dll. No Debug Info. Base Address: $73A00000. Process Project13.exe (13088) Module Load: bcryptPrimitives.dll. No Debug Info. Base Address: $76810000. Process Project13.exe (13088) Module Load: SECHOST.dll. No Debug Info. Base Address: $763A0000. Process Project13.exe (13088) Module Load: ADVAPI32.dll. No Debug Info. Base Address: $73AF0000. Process Project13.exe (13088) Module Load: msvcrt.dll. No Debug Info. Base Address: $75DE0000. Process Project13.exe (13088) Module Load: USER32.dll. No Debug Info. Base Address: $76870000. Process Project13.exe (13088) Module Load: win32u.dll. No Debug Info. Base Address: $74A20000. Process Project13.exe (13088) Module Load: GDI32.dll. No Debug Info. Base Address: $74A50000. Process Project13.exe (13088) Module Load: gdi32full.dll. No Debug Info. Base Address: $74640000. Process Project13.exe (13088) Module Load: imagehlp.dll. No Debug Info. Base Address: $74060000. Process Project13.exe (13088) Module Load: SHLWAPI.dll. No Debug Info. Base Address: $745F0000. Process Project13.exe (13088) Module Load: ole32.dll. No Debug Info. Base Address: $74080000. Process Project13.exe (13088) Module Load: WS2_32.dll. No Debug Info. Base Address: $73E20000. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $01940000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $031A0000. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $02570000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $01940000. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $02570000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $01940000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $01940000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $01940000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $01940000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $02570000. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $01940000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $01940000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $01940000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $01940000. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $01940000. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $01940000. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $02570000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $01940000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $031A0000. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $02570000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $02570000. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $01940000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $02570000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $01940000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $01940000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $031A0000. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $02570000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $01940000. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $031A0000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $02570000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $01940000. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $02570000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $01940000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $02570000. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Unload: fmx250.bpl. Process Project13.exe (13088) Module Load: VERSION.dll. No Debug Info. Base Address: $73990000. Process Project13.exe (13088) Module Load: NETAPI32.dll. No Debug Info. Base Address: $712F0000. Process Project13.exe (13088) Module Load: MPR.dll. No Debug Info. Base Address: $72BB0000. Process Project13.exe (13088) Module Load: SHFOLDER.dll. No Debug Info. Base Address: $737E0000. Process Project13.exe (13088) Module Load: SHELL32.dll. No Debug Info. Base Address: $74A80000. Process Project13.exe (13088) Module Load: WINHTTP.dll. No Debug Info. Base Address: $72B00000. Process Project13.exe (13088) Module Load: WSOCK32.dll. No Debug Info. Base Address: $72A00000. Process Project13.exe (13088) Module Load: OLEACC.dll. No Debug Info. Base Address: $6F3D0000. Process Project13.exe (13088) Module Load: CFGMGR32.dll. No Debug Info. Base Address: $73D50000. Process Project13.exe (13088) Module Load: OPENGL32.dll. No Debug Info. Base Address: $6F2F0000. Process Project13.exe (13088) Module Load: SHCORE.dll. No Debug Info. Base Address: $73D90000. Process Project13.exe (13088) Module Load: GLU32.dll. No Debug Info. Base Address: $70C90000. Process Project13.exe (13088) Module Load: netutils.dll. No Debug Info. Base Address: $71C70000. Process Project13.exe (13088) Module Load: Windows.Storage.dll. No Debug Info. Base Address: $769B0000. Process Project13.exe (13088) Module Load: AppCore.dll. No Debug Info. Base Address: $73B70000. Process Project13.exe (13088) Module Load: POWRPROF.dll. No Debug Info. Base Address: $760E0000. Process Project13.exe (13088) Module Load: profapi.dll. No Debug Info. Base Address: $74970000. Process Project13.exe (13088) Module Load: fmx250.bpl. Has Debug Info. Base Address: $00D10000. Process Project13.exe (13088) Module Load: COMDLG32.dll. No Debug Info. Base Address: $742A0000. Process Project13.exe (13088) Module Load: COMCTL32.dll. No Debug Info. Base Address: $6F510000. Process Project13.exe (13088) Module Load: urlmon.dll. No Debug Info. Base Address: $6CE50000. Process Project13.exe (13088) Module Load: WINMM.dll. No Debug Info. Base Address: $72F20000. Process Project13.exe (13088) Module Load: d3d9.dll. No Debug Info. Base Address: $68C10000. Process Project13.exe (13088) Module Load: WINSPOOL.DRV. No Debug Info. Base Address: $6F280000. Process Project13.exe (13088) Module Load: iertutil.dll. No Debug Info. Base Address: $6CC30000. Process Project13.exe (13088) Module Load: WINMMBASE.dll. No Debug Info. Base Address: $72A10000. Process Project13.exe (13088) Module Load: WINMMBASE.dll. No Debug Info. Base Address: $001D0000. Process Project13.exe (13088) Module Unload: WINMMBASE.dll. Process Project13.exe (13088) Module Load: WINMMBASE.dll. No Debug Info. Base Address: $001D0000. Process Project13.exe (13088) Module Unload: WINMMBASE.dll. Process Project13.exe (13088) Module Load: dwmapi.dll. No Debug Info. Base Address: $6C320000. Process Project13.exe (13088) Module Load: bcrypt.dll. No Debug Info. Base Address: $729E0000. Process Project13.exe (13088) Module Load: IMM32.dll. No Debug Info. Base Address: $76370000. Process Project13.exe (13088) Module Load: UxTheme.dll. No Debug Info. Base Address: $6C2A0000. Process Project13.exe (13088) Module Load: MSCTF.dll. No Debug Info. Base Address: $761C0000. Process Project13.exe (13088) Module Load: gdiplus.dll. No Debug Info. Base Address: $6BFA0000. Process Project13.exe (13088) Thread Start: Thread ID: 2908. Process Project13.exe (13088) Module Load: TextInputFramework.dll. No Debug Info. Base Address: $6F1E0000. Process Project13.exe (13088) Module Load: CoreMessaging.dll. No Debug Info. Base Address: $6C8A0000. Process Project13.exe (13088) Module Load: CoreUIComponents.dll. No Debug Info. Base Address: $6C930000. Process Project13.exe (13088) Module Load: NTMARTA.dll. No Debug Info. Base Address: $71F60000. Process Project13.exe (13088) Module Load: WinTypes.dll. No Debug Info. Base Address: $70CF0000. Process Project13.exe (13088) Module Load: USERMGRCLI.dll. No Debug Info. Base Address: $70C00000. Process Project13.exe (13088) Thread Start: Thread ID: 14704. Process Project13.exe (13088) Thread Start: Thread ID: 11932. Process Project13.exe (13088) Thread Start: Thread ID: 12476. Process Project13.exe (13088) Module Load: CLBCatQ.DLL. No Debug Info. Base Address: $74210000. Process Project13.exe (13088) Module Load: DataExchange.dll. No Debug Info. Base Address: $5B340000. Process Project13.exe (13088) Module Load: d3d11.dll. No Debug Info. Base Address: $625F0000. Process Project13.exe (13088) Module Load: dcomp.dll. No Debug Info. Base Address: $5B250000. Process Project13.exe (13088) Module Load: dxgi.dll. No Debug Info. Base Address: $62850000. Process Project13.exe (13088) Module Load: twinapi.appcore.dll. No Debug Info. Base Address: $6F790000. Process Project13.exe (13088) Module Load: d3d10_1.dll. No Debug Info. Base Address: $6B4A0000. Process Project13.exe (13088) Module Load: d3d10_1core.dll. No Debug Info. Base Address: $69450000. Process Project13.exe (13088) Module Unload: d3d10_1core.dll. Process Project13.exe (13088) Module Unload: d3d10_1.dll. Process Project13.exe (13088) Module Load: d3d10_1.dll. No Debug Info. Base Address: $6B4A0000. Process Project13.exe (13088) Module Load: d3d10_1core.dll. No Debug Info. Base Address: $69450000. Process Project13.exe (13088) Module Load: ResourcePolicyClient.dll. No Debug Info. Base Address: $6D230000. Process Project13.exe (13088) Module Unload: ResourcePolicyClient.dll. Process Project13.exe (13088) Module Load: igd10iumd32.dll. No Debug Info. Base Address: $5C3A0000. Process Project13.exe (13088) Module Load: ncrypt.dll. No Debug Info. Base Address: $6B860000. Process Project13.exe (13088) Module Load: NTASN1.dll. No Debug Info. Base Address: $6B830000. Process Project13.exe (13088) Module Load: igdusc32.dll. No Debug Info. Base Address: $5ECD0000. Process Project13.exe (13088) Module Unload: igdusc32.dll. Process Project13.exe (13088) Module Unload: NTASN1.dll. Process Project13.exe (13088) Module Unload: ncrypt.dll. Process Project13.exe (13088) Module Unload: igd10iumd32.dll. Process Project13.exe (13088) Module Load: igd10iumd32.dll. No Debug Info. Base Address: $5C3A0000. Process Project13.exe (13088) Module Load: ncrypt.dll. No Debug Info. Base Address: $6B860000. Process Project13.exe (13088) Module Load: NTASN1.dll. No Debug Info. Base Address: $6B830000. Process Project13.exe (13088) Module Load: igdusc32.dll. No Debug Info. Base Address: $5ECD0000. Process Project13.exe (13088) Module Load: d2d1.dll. No Debug Info. Base Address: $51D40000. Process Project13.exe (13088) Module Load: CRYPT32.dll. No Debug Info. Base Address: $73EE0000. Process Project13.exe (13088) Module Load: MSASN1.dll. No Debug Info. Base Address: $74390000. Process Project13.exe (13088) Module Load: DWrite.dll. No Debug Info. Base Address: $51AF0000. Process Project13.exe (13088) Module Load: WindowsCodecs.dll. No Debug Info. Base Address: $699C0000. Process Project13.exe (13088)

Notice, again, this is not specific to Delphi 10.2 Tokyo or Delphi 10.1 Berlin, but the same applies to the XE series and even classic versions of the product. The issue is caused by a change at the operating system level.

If you are a developer using RAD Studio, we recommend holding off moving to Windows 10 Creators Update on your developer machines, but this is clearly not a solution, also also prevents you from experimenting with the latest version of Windows.

First Solution: Embarcadero to Fix the Linker

Given the issue is how runtime packages are managed by the operating system, the ultimate solutions can come only from two player: Embarcadero or Microsoft. In fact, it is coming from both sides.

On the Embarcadero side, our R&D team has worked on changing the linker in 10.2 Tokyo, so that it produces a single import table with all required entries. The problem is if we just release a new linker, all existing package libraries will still misbehave. So we need to update a fairly large portion of the product, something more commonly done in an Update (or new Release) than via a hot fix. This is by no mean a final decision and R&D and PM are weighing in the alternatives. Now, what about older version of Delphi? Given the effect on packages (from us and third parties) all requiring to be recompiled, this is a fairly difficult scenario to address for past versions of RAD Studio.

Second Solution: Microsoft to Fix the Loader

The second solution would be to Microsoft to address the issue wih the loaded, keep the optimized parallel loading but taking into account the scenario of Delphi packages (which, in fact, happens also with a handful of platform libraries, even if to a more limited extent). Now, we are very happy to share the fact that we have engaged with Microsoft on the issue and they have been very fast to tackle it. The latest 16215 "Insider Build" of Windows 10 Fall Creators Update (https://blogs.windows.com/windowsexperience/2017/06/08/announcing-windows-10-insider-preview-build-16215-pc-build-15222-mobile) addresses the issue. As you can see, using the RTM version of 10.2 Tokyo the FMX library is loaded twice. Still not exactly as it used to work, but not really causing any actual problem:

This is the complete event log as you start debugging a Windows FireMonkey application with runtime packages on build 16215. Lines related with Delphi packages are in bold:

Thread Start: Thread ID: 208. Process Project3.exe (6184) Process Start: C:\Users\Marco\Documents\Embarcadero\Studio\Projects\Win32\Debug\Project3.exe. Base Address: $00400000. Process Project3.exe (6184) Module Load: Project3.exe. Has Debug Info. Base Address: $00400000. Process Project3.exe (6184) Module Load: ntdll.dll. No Debug Info. Base Address: $76FA0000. Process Project3.exe (6184) Module Load: KERNEL32.dll. No Debug Info. Base Address: $74360000. Process Project3.exe (6184) Module Unload: KERNEL32.dll. Process Project3.exe (6184) Module Load: KERNEL32.dll. No Debug Info. Base Address: $74360000. Process Project3.exe (6184) Module Load: KERNELBASE.dll. No Debug Info. Base Address: $76DD0000. Process Project3.exe (6184) Module Load: rtl250.bpl. Has Debug Info. Base Address: $50050000. Process Project3.exe (6184) Module Load: OLEAUT32.dll. No Debug Info. Base Address: $74EA0000. Process Project3.exe (6184) Module Load: msvcp_win.dll. No Debug Info. Base Address: $76C20000. Process Project3.exe (6184) Module Load: ucrtbase.dll. No Debug Info. Base Address: $76B00000. Process Project3.exe (6184) Module Load: combase.dll. No Debug Info. Base Address: $76680000. Process Project3.exe (6184) Module Load: RPCRT4.dll. No Debug Info. Base Address: $74F40000. Process Project3.exe (6184) Module Load: SspiCli.dll. No Debug Info. Base Address: $739F0000. Process Project3.exe (6184) Module Load: CRYPTBASE.dll. No Debug Info. Base Address: $739E0000. Process Project3.exe (6184) Module Load: bcryptPrimitives.dll. No Debug Info. Base Address: $74580000. Process Project3.exe (6184) Module Load: SECHOST.dll. No Debug Info. Base Address: $746A0000. Process Project3.exe (6184) Module Load: ADVAPI32.dll. No Debug Info. Base Address: $76D50000. Process Project3.exe (6184) Module Load: msvcrt.dll. No Debug Info. Base Address: $73D00000. Process Project3.exe (6184) Module Load: USER32.dll. No Debug Info. Base Address: $764E0000. Process Project3.exe (6184) Module Load: win32u.dll. No Debug Info. Base Address: $73A10000. Process Project3.exe (6184) Module Load: GDI32.dll. No Debug Info. Base Address: $74660000. Process Project3.exe (6184) Module Load: gdi32full.dll. No Debug Info. Base Address: $73AC0000. Process Project3.exe (6184) Module Load: imagehlp.dll. No Debug Info. Base Address: $745E0000. Process Project3.exe (6184) Module Load: SHLWAPI.dll. No Debug Info. Base Address: $76CF0000. Process Project3.exe (6184) Module Load: ole32.dll. No Debug Info. Base Address: $74480000. Process Project3.exe (6184) Module Load: WS2_32.dll. No Debug Info. Base Address: $73C90000. Process Project3.exe (6184) Module Load: fmx250.bpl. Has Debug Info. Base Address: $02B40000. Process Project3.exe (6184) Module Unload: fmx250.bpl. Process Project3.exe (6184) Module Load: VERSION.dll. No Debug Info. Base Address: $73850000. Process Project3.exe (6184) Module Load: MPR.dll. No Debug Info. Base Address: $6FC30000. Process Project3.exe (6184) Module Load: SHFOLDER.dll. No Debug Info. Base Address: $6FC60000. Process Project3.exe (6184) Module Load: SHELL32.dll. No Debug Info. Base Address: $75100000. Process Project3.exe (6184) Module Load: CFGMGR32.dll. No Debug Info. Base Address: $74CC0000. Process Project3.exe (6184) Module Load: SHCORE.dll. No Debug Info. Base Address: $75010000. Process Project3.exe (6184) Module Load: Windows.Storage.dll. No Debug Info. Base Address: $74700000. Process Project3.exe (6184) Module Load: AppCore.dll. No Debug Info. Base Address: $746F0000. Process Project3.exe (6184) Module Load: POWRPROF.dll. No Debug Info. Base Address: $74430000. Process Project3.exe (6184) Module Load: profapi.dll. No Debug Info. Base Address: $76660000. Process Project3.exe (6184) Module Load: NETAPI32.dll. No Debug Info. Base Address: $6EA80000. Process Project3.exe (6184) Module Load: WINHTTP.dll. No Debug Info. Base Address: $70F70000. Process Project3.exe (6184) Thread Start: Thread ID: 6828. Process Project3.exe (6184) Module Load: WSOCK32.dll. No Debug Info. Base Address: $70D50000. Process Project3.exe (6184) Module Load: OLEACC.dll. No Debug Info. Base Address: $6FB20000. Process Project3.exe (6184) Module Load: OPENGL32.dll. No Debug Info. Base Address: $6C8D0000. Process Project3.exe (6184) Thread Start: Thread ID: 6456. Process Project3.exe (6184) Module Load: GLU32.dll. No Debug Info. Base Address: $6FAC0000. Process Project3.exe (6184) Module Load: netutils.dll. No Debug Info. Base Address: $6E4A0000. Process Project3.exe (6184) Module Load: fmx250.bpl. Has Debug Info. Base Address: $02C40000. Process Project3.exe (6184) Module Load: COMDLG32.dll. No Debug Info. Base Address: $76A10000. Process Project3.exe (6184) Module Load: COMCTL32.dll. No Debug Info. Base Address: $70D60000. Process Project3.exe (6184) Module Load: urlmon.dll. No Debug Info. Base Address: $6FF00000. Process Project3.exe (6184) Module Load: WINMM.dll. No Debug Info. Base Address: $6CEC0000. Process Project3.exe (6184) Module Load: WINSPOOL.DRV. No Debug Info. Base Address: $6C860000. Process Project3.exe (6184) Module Load: d3d9.dll. No Debug Info. Base Address: $6B960000. Process Project3.exe (6184) Module Load: iertutil.dll. No Debug Info. Base Address: $6FCE0000. Process Project3.exe (6184) Thread Start: Thread ID: 7136. Process Project3.exe (6184) Module Load: WINMMBASE.dll. No Debug Info. Base Address: $6CE90000. Process Project3.exe (6184) Module Load: dwmapi.dll. No Debug Info. Base Address: $6F4C0000. Process Project3.exe (6184) Module Load: bcrypt.dll. No Debug Info. Base Address: $71C50000. Process Project3.exe (6184) Module Load: IMM32.dll. No Debug Info. Base Address: $74E70000. Process Project3.exe (6184) Thread Start: Thread ID: 4232. Process Project3.exe (6184) Module Load: UxTheme.dll. No Debug Info. Base Address: $70620000. Process Project3.exe (6184) Module Load: MSCTF.dll. No Debug Info. Base Address: $768C0000. Process Project3.exe (6184) Module Load: gdiplus.dll. No Debug Info. Base Address: $70830000. Process Project3.exe (6184) Thread Start: Thread ID: 3124. Process Project3.exe (6184) Module Load: TextInputFramework.dll. No Debug Info. Base Address: $6C7A0000. Process Project3.exe (6184) Module Load: CoreUIComponents.dll. No Debug Info. Base Address: $6C570000. Process Project3.exe (6184) Module Load: CoreMessaging.dll. No Debug Info. Base Address: $6C4D0000. Process Project3.exe (6184) Module Load: NTMARTA.dll. No Debug Info. Base Address: $705F0000. Process Project3.exe (6184) Module Load: WinTypes.dll. No Debug Info. Base Address: $6C400000. Process Project3.exe (6184) Module Load: WinTypes.dll. No Debug Info. Base Address: $05960000. Process Project3.exe (6184) Module Unload: WinTypes.dll. Process Project3.exe (6184) Thread Start: Thread ID: 3616. Process Project3.exe (6184) Thread Start: Thread ID: 5984. Process Project3.exe (6184) Module Load: CLBCatQ.DLL. No Debug Info. Base Address: $73A30000. Process Project3.exe (6184) Module Load: DataExchange.dll. No Debug Info. Base Address: $69B60000. Process Project3.exe (6184) Module Load: d3d11.dll. No Debug Info. Base Address: $69910000. Process Project3.exe (6184) Module Load: dcomp.dll. No Debug Info. Base Address: $69800000. Process Project3.exe (6184) Module Load: dxgi.dll. No Debug Info. Base Address: $69770000. Process Project3.exe (6184) Module Load: twinapi.appcore.dll. No Debug Info. Base Address: $6CBF0000. Process Project3.exe (6184) Module Load: RMCLIENT.dll. No Debug Info. Base Address: $6CBD0000. Process Project3.exe (6184) Module Load: d3d10_1.dll. No Debug Info. Base Address: $63B40000. Process Project3.exe (6184) Module Load: d3d10_1core.dll. No Debug Info. Base Address: $63AE0000. Process Project3.exe (6184) Module Unload: d3d10_1core.dll. Process Project3.exe (6184) Module Unload: d3d10_1.dll. Process Project3.exe (6184) Module Load: d3d10_1.dll. No Debug Info. Base Address: $63B40000. Process Project3.exe (6184) Module Load: d3d10_1core.dll. No Debug Info. Base Address: $63AE0000. Process Project3.exe (6184) Module Load: ResourcePolicyClient.dll. No Debug Info. Base Address: $63A40000. Process Project3.exe (6184) Module Unload: ResourcePolicyClient.dll. Process Project3.exe (6184) Module Load: vm3dum10.exe. No Debug Info. Base Address: $63AA0000. Process Project3.exe (6184) Module Unload: vm3dum10.exe. Process Project3.exe (6184) Module Load: vm3dum10.exe. No Debug Info. Base Address: $63AA0000. Process Project3.exe (6184) Module Unload: vm3dum10.exe. Process Project3.exe (6184) Module Load: vm3dum10.exe. No Debug Info. Base Address: $63AA0000. Process Project3.exe (6184) Module Unload: vm3dum10.exe. Process Project3.exe (6184) Module Load: vm3dum10.exe. No Debug Info. Base Address: $63AA0000. Process Project3.exe (6184) Module Load: d2d1.dll. No Debug Info. Base Address: $65120000. Process Project3.exe (6184) Module Load: CRYPT32.dll. No Debug Info. Base Address: $73DC0000. Process Project3.exe (6184) Module Load: MSASN1.dll. No Debug Info. Base Address: $75000000. Process Project3.exe (6184) Module Load: DWrite.dll. No Debug Info. Base Address: $64EA0000. Process Project3.exe (6184) Module Load: WindowsCodecs.dll. No Debug Info. Base Address: $6C290000. Process Project3.exe (6184)

Perfect solution, right? Well, it does fix the issue for current and old versions of Delphi, but unfortunately not immediately. It is true Microsoft fixed the problem, but if the solution will show only in the next major release of the operating system, still several months away (Fall Creators Update), what happens to developers and users on Creators Update? We still hope and have been asking Microsoft for a fix also for the current version of Windows, and you can certainly join us in this request.

Some Temporary Workarounds

Given the two solutions above are coming but don't address the issue immediately and for all developers, it is important to focus also on a few available workarounds.

A first one is for debugging. Given the issue happens when loading the application, running it standalone and later attaching the debugger to it seems to work for most developers. Clearly, it is an annoyance, but clearly much better than waiting a lot of time or see the debugger get stuck.

A second workaround (for end users) is to consider one of the tools that fix-up and cleanup PE executables, including reorganizing the import/export tables. There are many such tools. One of them is http://www.ntcore.com/exsuite.php.

There are of course other more extreme options, like staying on Windows 10 Anniversary edition, jumping to the latest Insider release or moving from the use of runtime packages to releasing a single executable.

Conclusion

We are working on releasing our linker solution for the issue, we'll keep pushing Microsoft for a broad and more immediate fix, and we are also evaluating alternative workarounds for the short term. Stay tuned for more information.

Categories: News, Blogs, and Tips

Speaking at the Italian Delphi Day 2017 Conference Next Week

Fri, 06/09/2017 - 02:44

Next Wednesday, June 14th, I'll give a keynote at the Delphi Day conference in Piacenza, Italy, which is also the city where I live (short trip, for sure). This is a conference I used to organize in the past and that Paolo Rossi and Wintech Italia are continuing to put together, with a fairly impressive group of speakers, Embarcadero MVPs, present and former members of Delphi R&D team.

I'll give a keynote, probably not too technical, and I'm likley going to give it in Italian. But I'll be around the entire day, and likley also stop by the day before (some of the pre-conference seminars are very interesting!). For all information and to sign up (the conference cost is nominal, just pays for the food) see:

http://www.delphiday.it/

I hope to see a lot of Italian Delphi developers there, as usual.

Categories: News, Blogs, and Tips