Boost your productivity with TMS components & RAD Studio 10.2 Tokyo

Yesterday Embarcadero released Delphi, C++Builder and RAD Studio 10.2 Tokyo:

For our registered users, already several products are ready for this new RAD Studio version!
So get started today with your Windows or cross-platform development in 10.2 Tokyo with TMS VCL, FMX and FNC components.

TMS rollout of components with RAD Studio 10.2 Tokyo support:

  VCL Windows application development
  FMX cross-platform application development
  FNC cross-platform & cross-framework application development
  Developer tools for Delphi developers

Our team is working hard to continue to add RAD Studio 10.2 Tokyo support to our other wide range of component products. You can track here the progress of our work to cover other products. For trial users, RAD Studio 10.2 Tokyo support will follow soon.

Read More

Read More

Kylix: The Real Lowdown – I wrote this in 2000 too

A while ago – while researching yesterdays post – I came across the below article that I wrote back in august 2000 for The Delphi (by Pinnacle Publishing – long gone by now) and on-line at I found a cached copy first at and back-tracked from there. Since the wayback machine isn’t indexed, I salvaged the […] … Read More

Read More

My Top 10 Aurelius Features – #1 Maturity

Finally, My Top 10 Aurelius Features series has come to an end. And the number 1 of the list is Maturity. Aurelius has been first released in early 2012. Since then, in five years, it has received 33 releases! With the user feedback received during all the time, I’m confident that Aurelius feature set is pretty extensive. For example, you can build applications for all supported Delphi platforms: Windows, Mac OS X, iOS, Android and Linux. The number of supported database systems is impressive: Oracle, MySQL, SQL Server, PostgreSQL, DB2, Firebird, SQLite, NexusDB, ElevateDB and the list goes on. The same can be said about the component libraries you can use to access the database: the list of 15 options include FireDac, dbExpress, ADO, UniDac, among others. Maturity also means that you can trust it, because it just works. Aurelius test suite includes hundreds of unique tests, which makes up thousands of tests because we make sure that they work in all the supported platforms and servers. This means that you can be sure it will work on Windows, using dbExpress to access an Oracle database, the same way it will work on Linux, using FireDac to access a MySQL database. In the end, why I really like this maturity feature? Because it makes my life easier and happier. Lower support because there are no known bugs that stand for too long. And happier customers because they have the features they need. We’d love to hear your comments about it. Do you agree with this list? What would be yours? Post your opinions and comments below, visit our website, download TMS Aurelius trial and let us know what you think. Don't forget to subscribe to our YouTube channel to get notified about upcoming videos!
Read More

Fast Development Rules! (Part 2)

I received some good feedback on this blog and wanted to share a really cool example from one of our MVPs, Eli from Peacekeeper ( He recently completed a fairly involved FMX (FireMonkey) application for the Oil and Gas industry in 3 weeks! Here is his summary “I just finished a medium size enterprise app build in Delphi for iOS. It is a mobile forms document solution for a client. It has somewhere around 100-150 fields, 20+ tabs, 5 forms, offline caching, uses XML, JSON, SOAP, LiveBindings, FireDAC, data syncing, signatures, drawing, GPS, and other RAD Studio technologies in around 33,000 LoC. Suffice to say Delphi can move mountains.” This is now a template that he can reuse with lots of other apps for iOS and Android, since it is FMX. He is even willing to share with others and they can choose to use his services as needed. I have managed to build quite a few apps over the years, especially mobile apps, (of course with experienced developers), so I can really appreciate this kind of speed. I wish I had RAD Studio back then. It would have saved me a lot of iterations and anxiety. In the last years, we have done a lot to promote FMX, but I think that we need to do a much better job explaining the power and range of possible solutions that leverages these tools. Eli did not use RAD Server, as he prefered a hosted back-end. But frankly combining the efficiency of our frameworks for front- and back-end development with RAD Server can result in even greater savings or opportunities to make even more money by developers or ISVs. Your typical MBaaS is $50+ per user.  With a 100 users, you will pay for RAD Server in a month and the rest is just the server hosting, which with Linux is trivial. This is a lot of potential ongoing revenue… I understand that some customers just don’t want to deal with AWS or Azure, so we may come up with some RAD Server hosted options as well. I love our cool apps examples, however they sometimes downplay the many great apps that are more utilitarian and may not have amazing front-ends. I think that in these cases FMX shines even more. With the many possible adapters for payments and connectivity to enterprise systems, the speed of development matters even more. For example, there are whole companies that specialize in building apps. With our tools, you can build a few templates and then your speed to deliver solutions will simply be unbeatable. So much opportunity out there! There are some really good deals out there for RAD Studio - go get the latest! Eli said that we almost got him with the great Architect Promo, and MVP’s are tough to get.
Read More

Making the Huge World of Delphi Small Again

The world of Delphi is HUGE. It love seeing all the different types of apps being built and seeing users all over the world. This week I was in Tokyo for their #0315inTokyo event announcing 10.2 Tokyo coming soon. In a surprising turn of events Eric Bonilha of Digifort from Brazil was in Tokyo on vacation too. He stopped by the Tokyo office of Embarcadero for a quick visit. He showed off the latest version of his Digifort Mobile client and the engineers here showed him some of the things they are working on with BeaconFence for a local museum. A lot of fun. We are all excited for the upcoming 10.2 Tokyo release adding support for Linux! It is happenstance meetings like this that show how global Delphi and Embarcadero really are. Go Delphi!
Read More

Embarcadero Weekly Round-up for Developers – #8/2017


  Embarcadero Weekly Round-up 8      
  Products | Free Tools | Events
We continue to improve RAD Studio, Delphi, and C++Builder with one central goal in mind: helping you build cross-platform Native Apps faster than ever before and delivering them to the largest audience possible with ease.
InterBase 2017 – Now Available
InterBase 2017 delivers the fastest version of InterBase yet with new language features, server wide performance monitoring and enhanced transaction handling.
Read More!
Download InterBase 2017 Now
The trial and developer editions of InterBase 2017 are available for free
Download the Trial Version
Download Free Developer Edition
Build IoT enabled apps with RAD Studio
ThingConnect IoT device components range from healthcare devices such as heartrate montiors, blood pressure monitors and scales to home automation gadgets like BLE light bulbs, Z-Wave enabled door locks, smart switches, smoke detectors and more.
Read More!
Webinar: External BeaconFence Mapping Editor
Embarcadero’s BeaconFence technology utilizes its Beacon Fencing Map Editor from the RAD Studio IDE, but is not able to run outside of it. Woll2Woll has created an external mapping editor to create XML mapping files Written 100% with the FireMonkey library – Runs on Windows, iOS, Android, and OSX.
Register Now!
16 March 2017
Delphi for Linux Boot Camp Replay
Just in case you missed the fantastic Delphi for Linux Boot Camp by Craig Chapman last week, or you want to watch it again, here is the replay that includes Marco Cantu’s Q&A at the end.
Read More!
Delphi for Linux RTL units
This blog post from Marco Cantu focuses solely on the RTL units that are going to be available in Delphi for the Linux platform.
Read More!
Key Traits of the Coming Delphi For Linux Compiler
In case you missed it: Here are some of the key technical elements of Embarcadero’s new Delphi compiler for the Linux platform.
Read More!
How to make a RESTful WebBroker app in C++Builder
WebBroker (included in Professional edition and up) makes it easy to build a RESTful server. This article shows you how to server data from a database via a REST API with WebBroker and C++Builder.
Register Now

Read More

Read More

Delphi for Linux. Revisited. Again.

I have been hoping for a long time that Embarcadero would reintroduce Linux support in Delphi, especially since they've added Mac, iOS and Android support in the mean time, hopefully working out (most of?) the kinks involved in cross platform support in the process. I may have even brought it up once or twice at live events. Well, they finally called my bluff. If you've been following
Read More

Raspberry Pi to Delphi messaging with MQTT

As promised in the blog about building a chat application with MQTT, here is a follow-up article on using the TMS MQTT client, this time to setup messaging between a Raspberry Pi and a Windows PC. The TMS MQTT client fully supports Lazarus and thus also targetting Linux and its variant Raspbian, so we can use the TMS MQTT Client from Raspberry Pi.
For this short demo, we setup Lazarus on Raspberry Pi and installed the TMS MQTT client component in the IDE as well as our free Raspberry Pi hardware lib.

We’ll use the component TMSLCLAdaADC12b to be able to use the 12bit ADC connected via i2c to the Raspberry Pi. The goal of the setup is to read-out noise meter values via the ADC and send the measurements via messaging to the channel /tms/raspi/. A Windows Delphi application will then listen through this same MQTT client to the messages on channel /tms/raspi/ and will display the values in our TMS Instrumentation Workshop component TvrScope. Best of all, with the help of these components, this is not much more than a 15 minute project where most of the time will be spent to properly connect the ADC breakout board via a breadboard to the Raspberry Pi i2c port.

For the code, we use the same setup in the Windows Delphi application as on the Raspberry Pi Lazarus application to connect our client to the Mosquitto test broker:

  TMSMQTTClient1.BrokerHostName := '';

On the Raspberry Pi Lazarus app, we add a timer that will get the ADC value every 200msec and send the value as a message to /tms/raspi/. For reason of simplicity, we’ll send the value as a text message via MQTT. The code to do this is added to the timer OnTimer() event handler:

  i: integer;
  // get value from the 4 channel ADC channel 0 to which the analog noise meter output is connected
  i := TMSLCLAdaADC12B1.ReadChannel(0);
  // send the value as text over MQTT
  TMSMQTTClient1.Publish('/tms/raspi/', inttostr(i)); 

To get the i2c communication working on the Raspberry Pi, we open the i2c connection to the ADC in the form’s OnCreate event:

procedure TForm1.FormCreate(Sender: TObject);
  // make sure to start the Raspberry Pi app with sufficient permissions to be able to open access to i2c
  if not TMSLCLAdaADC12B1.Open then
    ShowMessage('error opening i2c');

and we close the port again from the form’s OnClose event:

procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);

For the Delphi Windows client, here we’ll add an event handler for TMSMQTTClient.OnPublishReceived() that is triggered when a message is received. From this event, we store the received value in a variable containing the last received value LastVal. Here the (positive) value of the ADC is mapped onto the 0 to 100 range:

procedure TForm1.TMSMQTTClient1PublishReceived(ASender: TObject;
  APacketID: Word; ATopic: string; APayload: TArray);
  s := TEncoding.UTF8.GetString(APayload);
  LastVal := Round(100 * strtoint(s) / 1024);

To visualize the data, the TMS Instrumentation Workshop TVrScope component is used where we added one channel and automatic display (VrScope.Active = true). This means that at a configured frequency (VrScope.Frequency), this scope component requests the channel value and displays it in the scope. This is done via the TvrScope.OnNeedData() event that is triggered every time the scope advances and needs a new value. Here, the last received value LastVal is returned:

procedure TForm1.VrScope1NeedData(Sender: TObject; Channel: Integer;
  var Value: Integer);
  Value := LastVal;

As a result, here you can see some quickly captured data in our test setup:

In summary, this small demo shows how really quick & easy you can get started using m2m messaging using MQTT with the TMS MQTT Client and this on a wide range of devices, from desktop PC to mobile device, to Linux machine and to Raspberry Pi SBC. We wish you much fun with your projects and we love to hear from all the exciting stuff you create with these building blocks!

Read More

Read More