Delphi 10.2 Tokyo Godzilla ISO and other download links including hashes

I thought I already posted this, but since hashes were mentioned at [WayBack] Still can’t get Rad Studio 10.2 to install on my laptop. It’ll install now, but then it can’t load several BPLs and then it crashes before the IDE gets … – Phillip Woon – Google+ From [WayBack] and [WayBack] Rad Studio Tokyo 10.2 | Board4All: […] … Read More

Read More

Some interesting Delphi posts by Stefan Glienke – Spring4D maintainer

One of the Delphi programmers I keep an eye on is [WayBack] Stefan Glienke, the maintainer of the great Spring4D Delphi framework at His blog posts come in bursts, though his G+ posts are spreaded a bit more evenly. Some of his recent posts and references: [WayBack] Delphi-PRAXiS – Einzelnen Beitrag anzeigen – Delphi Spring4D: Nullables Via: […] … Read More

Read More

Delphi and Xcode 8.3.x deployment solution

Since Apple updated Xcode to version 8.3.x, iOS IPA deployment is broken with Delphi up to 10.2 (Tokyo). There is an official workaround, which basically instructs to download Xcode 8.2 and use that for now: Unfortunately though, Apple started sending out notifications, that it won’t accept any builds created…Read More
Read More

Build Healthcare Apps with Delphi and FireMonkey (FMX)

Today Healthcare is one of the hottest areas for Technology innovation. It is globally a $6B opportunity based on startup funding trends, which is a lot, but there is also a $3 Trillion industry to transform!


Delphi has a particularly strong presence in Healthcare. There are many, many Healthcare systems that are written in Delphi that service literally million of patients and thousands of providers. From primary care EHRs, Dental Software, all kinds of Radiology Suites, the lists goes on, and this is true across the globe. We have multiple existing integrations with some of the largest EHR systems in the World (Mumps integration anyone?).


I believe that there is substantial opportunity to leverage Delphi for Cross-Platform apps in Healthcare. It is an opportunity that is drastically underleveraged. Today, there are very few frameworks that can address this need as well as FireMonkey (FMX) with Delphi. Windows has been a great platform for this with very good security and performance that are critical for healthcare apps. Building HTML5 applications is relatively fast, but disconnected performance is particularly important in Healthcare and security can be stronger with native applications that provide far more encryption options.


The biggest opportunity is for highly functional purpose built applications. Traditional EHRs are very complicated, as they cover many use cases and huge ranges of functionality. However, provider’s time is particularly valuable. Building apps that make providers function more efficiently is super important. Optimizing patient flow to reduce waste is similarly important. These apps do not need to do everything, they need to do some things well. Some of you have probably noticed how providers drag these huge workstations around to type their notes… tablets are lighter, but few UX’s hit the mark. Plenty of room for innovation.

The following example is a nice conceptual view of a Doctor’s office registration application. The use case is super simple, yet think of the last times you’ve been in a doctor’s office and you have see things like this. I have been in some of the largest medical institutions in New York, and guess what – paper everywhere. The only place with an app was an Orthopedist that was charging $500 for a finger splinter that costs $5 at the pharmacy and the insurance covered it, but that is a separate story. Let’s build some great apps!


[YoutubeButton url=’′]

Read More

Read More

Rapid Prototyping Mobile Projects with Arduino and Open Hardware

These are the slides from my Mobile Dev and Test session on Rapid Prototyping Mobile Projects with Arduino and Open Hardware in San Diego. I’ll update later with links and more resources. slides download (v0.9) SlideShare Visuino Links Main Site – Documentation – Instructables – Hackster.IO – YouTube – Blog –
Read More

FMX.Dialogs basically blocks mixing VCL with FMX…

Nice find: Stefan Glienke+4 Look into the initialization block of FMX.Dialogs. The call to ActivateClassGroup(TFmxObject); turns off all the TRegGroups that don’t contain at least one type that inherits from TFmxObject which also happens to be the group that you register your form class to. GetClass then ignores such groups. I don’t have the slightest […] … Read More

Read More

TMS FixInsight and the inline directive

The Delphi compiler allows functions and procedures to be tagged with the inline directive to improve performance. If the function or procedure meets certain criteria, the compiler will insert code directly, rather than generating a call. Embarcadero docwiki gives a list of conditions under which inlining does or does not occur. One of basic conditions says: within a unit, the body for an inline function should be defined before calls to the function are made. TMS FixInsight 2017.04 introduces rule O805 “Inline marked routine comes after its call in the same unit”. Let’s check FMX and VCL code to see if Embarcadero follows their own rules. Short answer: it doesn’t. I will give a couple of examples from Delphi 10.1 Berlin (version 24.0.22858.6822). Vcl.Controls.pas //at line 8529 procedure TWinControl.ReadState(Reader: TReader); begin DisableAlign; try inherited ReadState(Reader); finally EnableAlign; end; FixupTabList; if FParent nil then Perform(CM_PARENTCTL3DCHANGED, 0, 0); UpdateControlState; end; Vcl.Controls.pas //at line 9010 procedure TWinControl.AlignControl(AControl: TControl); var Rect: TRect; begin if not HandleAllocated or (csDestroying in ComponentState) then Exit; if FAlignLevel 0 then Include(FControlState, csAlignmentNeeded) else begin DisableAlign; try Rect := GetClientRect; AlignControls(AControl, Rect); finally Exclude(FControlState, csAlignmentNeeded); EnableAlign; end; end; end; Vcl.Controls.pas //at line 9030 procedure TWinControl.DisableAlign; begin Inc(FAlignLevel); end; TWinControl.DisableAlign is an inline marked procedure. It is called at line 8531 and line 9019, but its body is defined after the calls – at line 9030. Obviously, this function will not be inlined. One more example from another unit: Fmx.ListView.pas //at line 2430 procedure TListViewBase.UpdateDeleteButtonLayout; var RelRect: TRectF; begin if (Adapter.Count < 1) or (FDeleteLayout = nil) or ((FDeleteButtonIndex = -1) and (FPrevDeleteButtonIndex = -1)) then Exit; if (FListingService nil) and (TListingTransitionFeature.DeleteButtonSlide in FListingService.GetTransitionFeatures) then begin FDeleteLayout.Width := DefaultDeleteButtonWidth * FDeleteModeTransitionAlpha; FDeleteButton.Opacity := 1; end else begin if FDeleteModeTransitionAlpha > 0 then FDeleteLayout.Width := DefaultDeleteButtonWidth else FDeleteLayout.Width := 0; FDeleteButton.Opacity := 0.5 + (FDeleteModeTransitionAlpha / 2); end; FDeleteLayout.Height := GetItemHeight(FDeleteButtonIndex); FDeleteLayout.Position.X := Width - FDeleteLayout.Width; if FDeleteButtonIndex = -1 then RelRect := GetItemRelRect(FPrevDeleteButtonIndex, LocalRect) else RelRect := GetItemRelRect(FDeleteButtonIndex, LocalRect); FDeleteLayout.Position.Y := (RelRect.Top + RelRect.Bottom - FDeleteLayout.Height) / 2; end; The method above contains two GetItemRelRect calls (lines 2457 and 2459), but both are before the actual GetItemRelRect body position in that unit (line 2868): Fmx.ListView.pas //at line 2868 function TListViewBase.GetItemRelRect(const Index: Integer; const LocRect: TRectF; const SideSpace: Integer = 0): TRectF; begin Result := RectF(LocRect.Left + FSideSpace + SideSpace, LocRect.Top + FSideSpace + FHeightSums[Index] - FScrollViewPos, LocRect.Width - ((SideSpace + FSideSpace) * 2), GetItemHeight(Index)); if (FScrollBar nil) and (not HasTouchTracking) and FScrollBar.Visible then Result.Right := Result.Right - FScrollBar.Width; end; Despite being declared as inline, this method will not be inlined. It is not a critical issue, but this makes inline directive useless. There are more occurrences of this issue in Vcl.ExtActns.pas, FMX.ASE.Lexer.pas, FMX.Graphics.pas, FMX.Types.pas, FMX.Utils.pas and FMX.ZOrder.Win.pas. This means that inlining conditions are not easy to follow, even though at first glance inline directive seems to be an easy way to slightly optimize your code. TMS FixInsight may help to make inlining more useful by avoiding such mistakes. You can download TMS FixInsight trial and check your own code.
Read More

RAD Studio 2017 Themes and Developers Survey

With 10.2 Tokyo shipping last month, we at Embarcadero have renewed our focus to future plans, while R&D is still busy with fixes, updates, and some additional Tokyo features (mostly C++ for Linux). Themes for 2017/2018 The RAD Studio PM team (that is myself, Sarina, and David)  has published a summary of the themes for this and the next year. You can find the document at There isn't much to add to what's written there. The three key Delphi related items are: Expanded native controls support for multi-device development Enhanced Windows 10 platform features Delphi Language Features RAD Studio 2017 Developer Survey We have also opened our yearly developers survey (available until April 25th) to our customers asking input for our future plans (for example asking for details on each of the 3 items above) and validation of some ideas we are exploring (in many existing and new areas). We know that a 97 questions survey can be intimidating (although a few questions are fairly easy and fast to answer) but this survey is the largest we do every year and we spend a lot of time examining the information our customers give us. The direct link is: So I'm asking you personally to take the survey , but also to invite others (active Delphi or C++Builder developers, but also developers who moved to other tools and could tell us what would make them consider coming back, or just why they are not using RAD Studio any more and what they don't like), and also software developers at large who have never used our tools extensively but are interest to tell us what they like in a developer tools. If you can help us reach more developers, it will help us shape the future of the product for a broader community. Thanks for your help.
Read More

TMS hands-on training day in Kortrijk, Belgium on June 8th

TMS software organizes a new training day on Thursday June 8th in Kortrijk – Belgium.

All day, sessions will be spent on TMS VCL components, TMS FNC components and TMS Cloud components with also sufficient session time allocated to handle your specific questions on TMS components. The sessions will be given by Bruno Fierens, Embarcadero MVP in Belgium and CTO from and
Bernard Roussely, product manager of TMS Cryptography Pack. All sessions will be in English.

In tentative program

9h00 – TMS FNC Controls architecture
Insight in the architecture of the TMS FNC controls and a brief introduction to using the TMS FNC library to write custom controls for VCL, FMX, LCL.

10h00 – TMS FNC Controls overview
Overview of TMS FNC UI Controls in the TMS FNC UI Pack, TMS FNC Chart, TMS FNC Blox

11h00 – TMS MQTT
Use the TMS messaging component for machine 2 machine messaging from Windows, iOS, Android, Android, Linux.

12h00 – Lunch

13h00 – TMS Google Mapping components
Overview of features and advanced capabilities in the TMS Google Mapping components for VCL & FMX.

14h00 – TMS Cryptography components
Using the TMS Cryptography components in a client-server scenario with certificate generation

15h00 – TMS Cloud Components & myCloudData
Access popular cloud services from VCL and FMX applications. Use service agnostic cloud file storage access. Use cloud data storage with the myCloudData service.

16h00 – TMS PDF Library
Use the cross-platform PDF generation engine and applying the PDF lib for automatic PDF generation from several TMS components.

17h00 – Closing Q&A


  • Hotel Ibis Styles Kortrijk Expo, Pres. Kennedypark 1, B-8500 Kortrijk
  • Free parking
  • Nearby highway (E17) exit
  • Facilities for hotel rooms at the event are available for international attendees

Registrations until May 31st

The cost of the TMS training day is 95 € exclusive VAT. This includes a full day access to the sessions and coffee/drinks during this day. A hot meal is served for lunch. Register now!

Read More

Read More