The ARC vs non-ARC situation adds yet another layer of complexity to creating cross platform code…

Interesting rant on the Delphi cross platform situation, for which this is a reminder to see how the current situation is after 2.5 years: [WayBack] The ARC vs non-ARC situation adds yet another layer of complexity to creating cross platform code. The Linux compiler uses ARC – while Windows and OSX don’t… – Lars Fosdal – Google+ –jeroen
Read More

macOS & Android 64 bit compile-ready support (update)

A while ago, we've posted a blog about macOS 64 bit support that has been added to our products. macOS 64 bit support has been added in RAD Studio Rio 10.3.2 and now with the 10.3.3 release, you can also target Android 64 bit. Unfortunately, there is no automatic installation for those 2 targets as there is no way for us to detect which version is installed and for which target(s) we need to compile. We aim for adding automatic installation support in RAD Studio 10.4. More information on how to add macOS and/or Android 64 bit support to your application is explained in the following blog post:
Read More

RAD Studio 10.3.3: iOS 13およびmacOS Catalinaサポート

7月にリリースした10.3.2では、Delphi向けmacOS 64-bitサポートを追加しました。10.3.3ではこれを拡張し、macOS Catalinaをサポートします。macOS Catalinaは、すべてのアプリが64-bit対応を要求される最初のmacOSバージョンとなります。Delphi macOS 64-bitサポートにより、公証サポートを含むmacOS App Storeをターゲットとした開発が可能になります。(read more)
Read More

TMS FixInsight 2019.11

I'm happy to announce FixInsight 2019.11 release What's New * New : Rule W531 Actual parameter of FreeAndNil() must be a reference to class instance * New : Rule W534 Class instance passed but interface expected * Fixed : FixInsight hangs in some cases when running W525 * Fixed : File specified in {$INCLUDE} directive cannot be found in some cases * Fixed : Access Violation on IDE start * Fixed : "Load Defaults" button in Settings dialog doesn't restore general settings * Fixed : Several parser issues I'll add few more words about new features. Rule W531 ensures that the parameter of FreeAndNil() is be a reference to a class instance. Due to FreeAndNil() implementation details, compiler is not able to check its parameter type. This compiles, but this is wrong: var Intf: IInterface; begin FreeAndNil(Intf); end; Rule W534 ensures that a class instance is not passed when an interface is expected. This may compile, but due to reference counting a class can be released right after such method call. Example: type ISomeInterface = interface ['{AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA}'] end; TSomeClass = class(TInterfacedObject, ISomeInterface) end; procedure DoSomethingWithSomeInterface(const SomeInterface: ISomeInterface); begin // ... end; procedure DoSomethingWithSomeClass; var SomeClass: TSomeClass; begin SomeClass := TSomeClass.Create; try DoSomethingWithSomeInterface(SomeClass); // <= W534 // After this call SomeClass will be released due to reference counting finally SomeClass.Free; // cannot be released twice end; end; Also there are new parameters for command line tool. In this release FixInsight needs to know more about your project. FixInsightCL --project=c:\source\example.dpr --libpath="C:\Program Files (x86)\Embarcadero\Studio\20.0\source" --unitscopes=Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;System;Xml;Data;Datasnap;Web;Soap --libpath should point to your Delphi source folder. And I suggest to copy values for --unitscopes and --unitaliases parameters from your project options.
Read More

TMS WEB Core v1.3 features part 2 of 2

A couple of days ago, we wrote a first blog article about the new features coming in TMS WEB Core v1.3.
If you were not already stunned by the first 10 new features presented for TMS WEB Core v1.3 Ferrara, here are 10 more new features:

1) Web crypto API wrapper classes

The web crypto API is meanwhile also standard built-in in all modern browsers. Therefore, for your convenience, easy to use Pascal wrapper classes are now provided that allow you to take advantage from these APIs from your code. This includes AES & RSA encryption as well as RSA & HMAC signature generation.

  • TAESEncryption
  • TRSAEncryption
  • TRSASignature
  • THMACSignature

2) Regular expression API wrapper class TRegEx

Browsers did have regular expression handling functionality for a long time. To make this easy to use for Delphi developers, we created a TRegEx class with an almost identical interface to the Delphi TRegEx class for maximum code reusability.

3) Local file access via TWebFilePicker, TWebFileUpload

TWebFilePicker is a component to let you pick local files via an open dialog while TWebFileUpload lets you do the same but in addition also enables to drag files from the machine file explorer to the browser. The components TWebFilePicker, TWebFileUpload have been extended to offer access to the properties of the selected local files as well as get the data of the file(s) in text, base64, URL or byte array format.

4) TWebLookupComboBox, TWebDBLookupComboBox

Having a combobox with two values per item, a displayed value and a data value is often a requirement for UI logic. With TWebLookupComboBox and its DB-aware counterpart TWebDBLookupComboBox, this is now out of the box available. Simply set & retrieve both the display value and data value per item.

5) Redesigned TWebMainMenu

Previously, the VCL TMainMenu equivalent for the web uses the jqWidgets controls by default. While the jqWidgets menu is nice & powerful, we thought it was better to have a menu component in the base controls and a separate one that is based on jqWidgets for those who need extra features. The new TWebMainMenu however brings all the convenience of the VCL TMainMenu and in addition has built-in responsive design. That means, if the width of the menu becomes too wide, it will collapse automatically and behave as a hamburger menu.

6) New features for TWebGoogleMaps

A lot of Google Maps functionality that was already available in our VCL TWebGMaps or FMX equivalent for a long time has now been added to TWebGoogleMaps. Adding circles, lines, rectangles, polygons, polylines is now possible. Selecting themes, load GPX files, use KML layers is easily accessible by calling simple TWebGoogleMaps methods.

7) New TWebImageZoomControl

An often used paradigm in web applications is the display of a thumbnail and showing the large version of the image when it is clicked. We have nicely encapsulated this functionality in the TWebImageZoomControl. With this control, it is as easy as setting the thumbnail image URL and large image URL and the control does everything for you.

8) Support for selecting the Electron version

With frequent new releases of the Electron framework for building cross platform desktop applications from your web applications, controlling which version of Electron to use became hard. Now, with a setting under project options, it is easy to select with what version of Electron you want to package your application (if multiple Electron versions are installed on your machine).

9) Component attribute for JS & CSS lib dependencies

TMyDependentComponent = class(TCustomControl);

This is a feature that will please developers diving into custom control development for TMS WEB Core. Often, a custom control can have a dependency to an external JavaScript and/or CSS library. When one uses the control but forgets to include the references to these external libraries, the control will normally not work. To avoid this, a new attribute was provided and the attribute parameters hold one or more external library references. When such control is added to the project, the library references will be automatically added to the project HTML file.

10) Update to latest pas2js compiler and pas2js RTL

We have included the latest pas2js compiler release version and updated to the latest RTL source. This way you can take advantage of all latest releases of the open-source pas2js project.

Our team is working hard doing the last finishing touches on the v1.3 release which is around the corner. Active TMS WEB Core users and TMS ALL-ACCESS users will get a notification shortly that the new version is available from the account page on our website.

Read More

Read More