Delphi is turning 25!

This week, Delphi is turning 25, and as part of the celebrations, members of the community have been encouraged to share their stories about Delphi, what they love and how it has helped their careers.

Delphi was originally launched on the 14th of February 1995, while I was still at 6th form College. It kind of passed me by, to be honest. At the time, I was just purchasing (well my parents did) my first PC with Windows on it. I was, however, using Pascal in the computer labs in some elective modules I took alongside my primary studies. (Progressing on from Basic).

It wasn’t until I left university and took my first post-uni job that I really discovered Delphi. I worked for a relatively new software house in the Leisure management domain, that has expanded into the UK, and because of my role, I ended up working alongside the US-based development team. It was just as they were moving from MS-DOS to Windows, primarily prompted by the wider business adoption of Windows following Windows 98.

The original DOS program was written in Turbo pascal, so Delphi was a natural progression.  It wasn’t long before I progressed fully into the development team. One key aspect of the move was updating my skill set and working towards Delphi Certification. At the time, this was mainly through night school study and through attending BorCon’s. I also joined up with the UK Developer Group and took my first steps into presenting. My first ever topic was around Replication with InterBase (Something we were doing with over 100 health clubs at the time).

One thing I remember from those days was a lot of Buzz around .Net, even David I told me to ensure I was up with it! Customers seemed to want it (Microsoft really sold every one that cool-aid), but none every really understood why when asked.  It was hard as a developer at the time, knowing what to stick with, what to expand on, where to focus the next phase of development. Sometimes you have to follow market demand, even if the market isn’t sure why it’s asking for something (kind of reminds me of 64bit applications only on mobile right now), but sometimes you need to look at the real business drivers and what makes sense for longterm delivery. Whatever has been thrown at Delphi, it continues to thrive. Even, Apple and Google are saying the new cool thing is to be RAD these days!

Thankfully, with a little consumer education of speed and performance of Delphi, the company I worked for ended up winning some big contracts with key health club chains, collecting 10’s of millions a month from recurring monthly memberships. This caught the attention of American Express, who we also wowed thanks to the rapid prototyping capabilities of Delphi. This lead to their first delivery of health club targetted recurring credit card billing.

We were also able to implement SaaS-based models years before they became the norm due to 3rd party libraries we integrated, again expanded with our very own management system written in Delphi.

Everything our customers throw at us, from connecting to Fiscal Printers in Italy, to multi-lingual support, to the integration of various access control scanners and relays (including hand scanners) to Lift control, to magnetic and contactless card encoding, Delphi was always up to the task. (either via direct API’s or support from 3rd party libraries).

With the world wide web growing in importance, it wasn’t long before integration was required. Intraweb provided a great way to expand out certain web applications, targetting the initial generation of web-enabled small form factor devices. Being able to use WYSIWYG with Delphi behind the scenes was massive in being able to get existing code out to new platforms. Web services also enabled the expansion into providing an API for other developers to connect into the core software engine. Critical for online bookings and reservations. This also tied the customers into our software even further, helping sell even more product licenses.

What was key, however, was that as the technical environment evolved, so did the language and the components available to deliver.

That is something that has carried on today. While lessons have been learned through trying new things, e.g. Kylix has come and gone, ARC is also on its way out, the language and features today allow coverage of Windows, Linux, macOS, iOS, Android covering 32bit and 64bit platforms – without compromise! Its fully native, fast and connected with OOP and data at its heart.

The eco-system of 3rd party component vendors and partners is growing again. More and more support around education exists, with LearnDelphi.org and the Embarcadero Academy. – If fact, the stuff you use to wait all year to get at BorCon is now so easily accessible online.

The biggest challenge I hear from people is that they want more Delphi developers, which is a great thing for a skill set to be valued so highly. There is even the Delphi Jobs Board for developers and employers.

For me, Delphi changed the direction of my career. I’ve ultimately traveled to many more interesting places and done many great things because of Delphi. I’ve met with Government ministers, education board members, directors, CEO’s, and thousands of developers, each with their own interest and appreciation of Delphi.

If I look at where Delphi is compared to the other languages and component platforms that have come and gone, it doesn’t feel 25 years old… it feels 25 years young, and like most athletes, just like it’s coming into its prime.

Join the celebration this Friday. #Delphi25th. I’ve some insider knowledge of a few things coming, and it sounds awesome! https://community.idera.com/developer-tools/b/blog/posts/this-week-is-tag-delphi25th

Creating PDF Reports in RAD Server

Creating PDF Reports in RAD Server

Reporting is a critical aspect of any enterprise application, but the data and the programming components to create reports are not always available on all platforms?

It took a little trial and error to work out the best path to create reports via RADServer using the components out the box.  In this post, I will share what I have learned along the way.

Reporting Components

The obvious answer to generating a report that can show on mobile is to create a report PDF report remotely download the PDF to the client over REST. But which version and platforms can be used?

Fast Reports (Embarcadero Edition), which is included in RAD Studio, provides everything we need to create a report and save it out to PDF for export.

Fast Reports – VCL or FMX?

Continue reading Creating PDF Reports in RAD Server

Creating and connecting to MSSQL Database on Azure with Delphi / C++Builder

Creating and connecting to MSSQL Database on Azure with Delphi / C++Builder

I have been asked multiple times recently about connecting to a  Azure databases with Delphi and C++Builder. So….I decided to make a video! Which even shows how to use the data directly at design time in the RAD Studio IDE.

The video follows the the 3 phases.

  • Creating an account
  • Creating a database
  • Connecting to the database from the RAD Studio IDE

Continue reading Creating and connecting to MSSQL Database on Azure with Delphi / C++Builder

Attributes for Documenting TEMSDataSetResource

Attributes for Documenting TEMSDataSetResource

I recently blogged about a number of RAD Server topics, including using TEMSDataSetResource, (the component that enables a TDataSet to be expose as a RESTful resource, and manage all the List, Get, Put, Post, Delete methods – very cool!), how to set named parameters for the TEMSDataSetResource documentation (where multiple keys are passed in e.g. with Master Detail relationships (reviewed below)), and how the YAML and JSON documentation is auto generated with custom RESTful resources / end points

Typically, each custom REST endpoint method (List, Get, Put, Post, Delete), would be supported by separate procedures in the code, with each having their attributes to support documentation, resource name etc. Continue reading Attributes for Documenting TEMSDataSetResource

Developing client applications using RESTful master-detail data with TRESTResponseDataSetAdapter

This is part 3 in my series of developing an REST server and client application and will focus around using the TRESTResponseDataSetAdapter.

In my last two posts, we have created a REST server with a fully documented API using YAML , and exposed 3 datasets with master detail relationships over REST using zero lines of code.  If you have not read and watch the videos. I would suggest starting there. – It’s now time to consume the API into a cross platform Delphi Client.

Steps to making the client

The video and supporting blog post take you through the following.

  1. Setting up components to connect to the REST API. (RAD Style)
  2. Converting the JSON into a master detail datasets (based on the current item in the JSON data)
  3. Enabling the data in the UI with LiveBindings and zero code.
  4. Tricks for reducing API calls.

Continue reading Developing client applications using RESTful master-detail data with TRESTResponseDataSetAdapter

Adding Tools into the IDE

Adding tools into the RAD Studio IDE.

Now, this isn’t new! But, this week in Sweden, I spoke to a developer who has been using Delphi for years and didn’t know about this handy trick. As I am currently working over a series when I’m developing a RESTful backend and client, it makes sense to show how to add the REST Debugger into the IDE menus.

“Configure Tools” inside RAD Studio

At the top of the IDE you will find the Tools Menu. You might normally go straight to the Options (to configure the IDE) or Getit Package Manager (to download components), but there is also Configure Tools… which manages the list of items underneath it.

Continue reading Adding Tools into the IDE

Master Detail data in RAD Server using TEMSDataSetResource

Master Detail data in RAD Server

The TEMSDataSetResource is a very powerful component that enables rapid development of full document REST API’s for TDataSet using RAD Server. Using TEMSDataSetResource, along with traditional master detail relationship configurations, it is possible to expose, and automatically document data APIs via REST with no code at all.

In this article, I will cover sharing master detail data with no code, but also how to roll your own REST endpoint to cover more advanced detail with detail embedded calls.

In my previous article, I updated advise on getting started with Swagger UI, using the new WebFiles feature of RAD Server (from 10.3.2) as a way to view your documentation as you build your backend services API. This article will build upon the sample application created in that post.

Continue reading Master Detail data in RAD Server using TEMSDataSetResource

Embedding Swagger UI into RAD Server

This post is an update to the original post written previously showing Swagger UI being used with RAD Server, covering new features of RAD Server.

Why Embed Swagger UI into RAD Server?

Swagger UI (as previously discussed) is a great option for checking your documentation and working with the REST API. One of the challenges has always been CORS (Cross Origin Resource Sharing) that makes execution of the code a challenge when developing.

There are a few options now however. You can either work around this with browser plug-ins, (as seen before), enable CORS in the emsserver.ini under [Server.APICrossDomain], or embed swagger-ui inside your RAD Server instance.

In this video, I cover the latter option. You can watch how to get documentation up and running. The video shows how to configure your EMSServer.ini to share the external resource through RAD Server and also modify the downloaded files to automatically load up the API documentation directly from RAD Server.

WebFiles in RAD Server EMSServer.ini

The key to making this work is the WebFiles option that was added to RAD Studio in 10.3.2. This was primarily added to make it easier to serve out web content and support ExtJS for doing web client development under the Architect edition of RAD Studio, however, this also has the benefit of making other content available to share.

Continue reading Embedding Swagger UI into RAD Server