Posts in Category: embarcadero

Workaround for FMX Memory Leaks on Windows in 10.2.1 

POSTED BY  ON IN TUTORIAL

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.

Posted by Andrew Tierney Thursday, August 17, 2017 9:45:00 PM Categories: embarcadero

Windows App Modernization with RAD Studio Tokyo 

POSTED BY  ON IN TUTORIAL

With RAD Studio 10.2 Tokyo, you can easily update your existing application and give it a modern Windows 10 look and feel. In today's post, I thought I would highlight our Windows 10 support to help you move your existing applications forward.

Windows 10 VCL GUI Controls

These controls were specifically designed for Windows 10 and address common UI paradigms on Windows 10. While they were designed for Windows 10, the controls will also work with older versions of Windows, such as Windows 7 and Windows 8.

 

 

Support for Native WinRT APIs

In RAD Studio, we provide support for native WinRT APIs, allowing you to leverage specific Windows 10 features. This includes ready-to-use components for notifications and contracts.

 

Windows 10 Store Support

Windows Desktop Bridge Deployment Support allows you to package new and existing desktop applications ready for the Windows 10 Store directly from your IDE using Microsoft's Desktop Bridge. Target hundreds of millions of Windows 10 devices with your existing VCL or FMX code base.

 

UI Theming

We provide a number of ready to use Windows 10 styles that you can apply to your Windows applications. For FireMonkey, custom styles are applied via a StyleBook. For VCL, a custom style can be applied via Project > Options > Application > Appearance.

 

Shown: OnxyBlue VCL style

 

Shown: Windows 10 Green VCL style, included in 10.2 Tokyo

 

Shown: Black Rock VCL Style from DelphiStyles.com

 

 Shown: Regal Blue VCL Style from DelphiStyles.com

 

 

Shown: FireMonkey Windows 10 Dark style, included with RAD Studio 10.2

Posted by Andrew Tierney Thursday, August 17, 2017 9:41:00 PM Categories: embarcadero

FREE controls for uniGUI 

Well..

I've decided to release 3x uniGUI controls as a gift to the Delphi / uniGUI community..

 

Attached is a simple wrapper for the SweetAlert2 library.  (QUICK HACK.. No unit testing, no tidy up etc..)

** No warranty - Use at your own risk **

FREE for commercial use, etc.. (just don't remove the copyright header).

 

1) Compile the Package/Install

2) Make sure your path includes the control folder

3) Copy the files/sweetalert folder into your project

4) Drag/Drop the uniSweetAlert control onto your form.

 

Simple usage like:

 

procedure TMainForm.UniButton1Click(Sender: TObject);

begin

 

   UniSweetAlert1.ShowMessage;

 

// or like

 

   UniSweetAlert1.Error('Oops','Something went wrong');

 

// or like

 

   UniSweetAlert1.Error('Oops','Error again','FixMe',3000);

 

// or like

 

   UniSweetAlert1.Question('Is this true','Please click one of the options below:','YES','NO',3000);

 

// or like

 

   UniSweetAlert1.title := 'Hello';

   UniSweetAlert1.text  := 'Testing';

   UniSweetAlert1.alertType := TAlertType.success;

   UniSweetAlert1.ShowMessage;

end;

 

// Events for Confirm or Cancel/Dismiss

 

procedure TMainForm.UniSweetAlert1Dismiss(Sender: TObject);

begin

   UniButton1.Caption := 'DIS';

   uniMemo1.Lines.Add('Dis');

end;

 

procedure TMainForm.UniSweetAlert1Success(Sender: TObject);

begin

   UniButton1.Caption := 'CLICKED';

   uniMemo1.Lines.Add('Clicked');

end;

 

Either (1) set properties and call .ShowMessage;

 

Or call the Error, Info, etc methods.

The second control is a wrapper for jQuery Toast:

https://github.com/k...ry-toast-plugin

(uniJToast currently has properties, a simple ShowMessage and events for Before/After Show/Hide.)
 

The third and final control is a wrapper for iTyped:

https://github.com/l...icius167/ityped

Simply add the uniTyped control (resize to your size).

var s: TStrings;

begin

  s := TStringList.Create;

  s.Add('Welcome to the jungle');

  s.Add('Restarting soo...');

  UniTyped1.text := s;

  UniTyped1.PlayTyped;

  s.Free;

end;

or 

Just set the properties in the control and do a UniTyped.PlayTyped.

Source code and Example for all controls is available below:

https://goo.gl/bnU2Ab

 

 

  

 

Posted by Andrew Tierney Wednesday, August 9, 2017 10:15:00 PM Categories: CastleSoft embarcadero

"Expert Delphi" book published! 

My "Expert Delphi" book published!

 "Expert Delphi" book has been published by PACKT Publishing and is currently available for a limited time for just  $10 at https://www.packtpub.com/application-development/expert-delphi. The book is about how to become developer super  hero and gain amazing productivity powers to develop stunning, native cross-platform mobile apps from the same codebase  for Android and iOS! The foreword was written by David Intersimone and I'm very proud about it, because I have the deepest  respect to David I!

 I have always wanted to write a Delphi book and never thought it takes so much work. More then 500 pages about Delphi  technology. This book is designed for Delphi developers that want to learn about latest Delphi technologies including cross-  platform mobile development from the same source code for Android and iOS. The main focus of "Expert Delphi" is mobile  development with Delphi.

 

What "Expert Delphi" book covers

 Chapter 1Fasten Your Seat Belts, where we learn how to install Delphi and prepare it for mobile cross-platform  development. We build a “Hello World” FireMonkey app and natively compile it from the same source code to Android and iOS.

 Chapter 2Mind Your Language, where we review basic constructs of Object Pascal programming language used in Delphi.  After covering fundamentals we quickly move on to the discussion of more advanced language concepts used in FireMonkey  programming, including class helpers, generics, anonymous code and Runtime Type Information.

Chapter 3Packing Up Your Toolbox, where we cover some of the most useful, every day programmer skills like writing multithreaded code with Parallel Programming Library and working with JSON and XML.

Chapter 4, Playing with FireMonkey, where we learn basics of building cross-platform, mobile Graphical User Interfaces with FireMonkey. We learn how to use shapes, effects and animation components. We cover working with touch, multi-touch and gestures. At the end of this chapter we write the complete mobile “Game of Memory” game.

Chapter 5FireMonkey in 3D, where we learn how to build stunning, interactive 3D graphical user interfaces, including working with wireframes, 3D controls and importing 3D models into your Delphi apps.

Chapter 6Building User Interfaces with Style, where we learn about FireMonkey styling. We look into using built-in styles, custom styles with “TStyleBook” component and customizing styles with embedded Style Editor. We also cover working with frames and using inherited views for specific mobile form factors.

Chapter 7Working with Mobile Operating System, where we are accessing mobile hardware and operating systems with high-level components abstracting away underlying mobile APIs. We look into working with sensors, camera, address book, embedding web browsers, using maps, creating and consuming Android services and working with language bridges for accessing APIs and frameworks not surfaced through FireMonkey library.

Chapter 8Extending to the Internet of Things where we learn how to build cross-platform mobile apps that communicate with IoT sensors and devices using Bluetooth LE communication protocol. We look into working with “TBluetoothLE” components, but also using specialized IoT components available via GetIt Package Manager. We also cover building proximity enabled apps that work with beacons, using “TBeacon” components and BeaconFence. The App Tethering framework is discussed as well for easy communication between mobile apps.

Chapter 9Embedding Databases, we build “To-Do List” mobile app that illustrates best practices for architecting data-driven solutions with clear separation between user interface and data access layers. We use FireDAC database access framework for communicating with embedded SQLite mobile database and build user interface with “TListView” component with dynamic appearance.

Chapter 10Integrating with Web Services, where we look at different Delphi frameworks and components for integrating with web services. We start from low-level native HTTP client library, consuming XML SOAP Web services, and moving on to REST and BaaS client components. In the last part we are looking into Cloud API for integrating with Amazon and Azure clouds. We also replace the “To-Do List” app data access tier with logic to store JSON data in the Amazon Simple Storage Service (S3). 

Chapter 11Building Mobile Backends, where we look at building scalable, multi-tier systems with Delphi. We learn how to build mobile backends with different Delphi frameworks including WebBroker, DataSnap and RAD Server. During the course of this chapter we will split the “To-Do List” app into separate client and server parts. 

Chapter 12App Deployment, where we look into practical steps of deploying Delphi mobile apps to Google PlayStore and Apple iOS App Store. We also look into best agile practices for continuous enhancement of your apps with using version control, refactorings and unit testing.

The Road Ahead, where we review what we have learnt in this book and look into emerging technologies including serverless backends, trends in mobile app development and new IoT communication protocols. We also discuss best places for getting more information and inspiration for your next, great, cross-platform Delphi app.

Hopefully Delphi developers will enjoy reading this book as much as I did writing it:-)

Posted by Andrew Tierney Wednesday, August 9, 2017 10:02:00 PM Categories: embarcadero

Some Data from the 2017 RAD Studio Developers Survey 

Post by Marco Cantu

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.

Posted by Andrew Tierney Wednesday, August 9, 2017 9:59:00 PM Categories: embarcadero

Delphi Tokyo Release 1 or 10.2.1 is Now Available 

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. 

Posted by Andrew Tierney Wednesday, August 9, 2017 9:55:00 PM Categories: embarcadero

Smart Mobile Studio - Updates 

Below is a post by "Smart Mobile Studio"  - Looking forward to the next release...

We are working very hard on the Smart RTL update, full time and almost round the clock. We have done some amazing refactoring and optimalization that gives Smart applications even more power. And we are going over the system with a fine tooth comb.

On the demo side we will be shipping probably the biggest demo any software development product has done to date - namely the Smart Desktop (also known as Amibian.js). The desktop even includes a working emulator so you can run legacy Amiga software in your browser.

The demo is intended to show many different techniques and how you can use Smart to leverage standard web technologies. For example, if you drop a zip archive on the desktop it will mount the archive as a drive. We are positive that our users will appreciate our solutions for what have traditionally been native only code.

More exciting is how you can easily run your Smart applications as the only program running on a pc. So when Linux boots up it simply boots straight into your web application without anything else (a full-screen web view). This opens up for some very interesting solutions, at a fraction of the cost compared to native development.

So there are exciting days ahead! Stay tuned!



 

Posted by Andrew Tierney Wednesday, August 9, 2017 9:42:00 PM Categories: embarcadero smart mobile studio