http://blog.marcocantu.com/marcocantu.blogmarcocantuhttp://www.marcocantu.comTechie Italian Blogging on Delphi and MoreGeoAtomService©2005 Marco Cantù2024-02-20T07:26:50.127Zmarcocantuhttp://www.marcocantu.comExpert Delphi: 2nd Editionhttp://blog.marcocantu.com/blog/2024-february-expertdelphi2.html2024-02-20T07:26:50.127Z2024-02-20T07:26:50.127ZMy new book, Expert Delphi, second edition, will be released tomorrow.
<p>I am very happy to announce that a new Delphi book I have been working on over the last year will be available in print starting tomorrow. The book, called Expert Delphi, is a new edition of a volume the late Pawel Glowacky wrote several years ago focusing primarily on FireMonkey and mobile development.</p>
<p>
<img alt="" src="http://blog.marcocantu.com/images/forblog/ExpertDelphiCover.png" style="height:540px; width:430px"></img>
</p>
<p>When I was offered to update the book, I accepted based on the agreement Pawel should still be listed as an author, despite having passed away years ago, and on the ground I was going to revise the book while keeping the original intact as much as possible. The book follows the first edition as much as possible. Of course, things have changed in the Delphi language, in the FireMonkey platform, in cloud access, and in many areas of the product and the new edition has been fully updated for Delphi 11 and Delphi 12.</p>
<p>In other words, the book is partially mine but Pawel's voice still shows, and I have kept areas like 3D and specific examples I know he was fond of, despite not being my favorites. Updating the book and dozens of examples was a lot of work, but I am happy with the process and even more with the result. There are other Delphi books around, quite a few in recent years I have to say, which pleases me in my Delphi product Manager role. Now there is a new one.</p>
<p>I have to thank Pawel's wife and son for giving their green light to the project and Stephen Ball for writing a very nice preface. I also have to thank my editors at Packt, for keeping up with my late deliveries. It is hard to work on a book in my spare time, on top of a full time job.</p>
<p>Apart from my personal take, what does this book cover? This is the official book presentation.</p>
<h3>Key Features</h3>
<ul>
<li>Understand the fundamentals of Delphi for building multi-device applications</li>
<li>Build desktop and mobile apps with the help of extensive examples that guide you through each step</li>
<li>Apply advanced features, such as parallel programming and multi-tier full-stack solutions, based on web connectivity</li>
</ul>
<h3>Book Description</h3>
<ul>
<li>Master Delphi, the most powerful Object Pascal IDE and versatile component library for cross-platform native app development, by harnessing its capabilities for building natively compiled, blazingly fast apps for all major platforms, including Android, iOS, Windows, Mac, and Linux.</li>
<li>Expert Delphi begins with a quick overview of Delphi, helping you get acquainted with the IDE and the Object Pascal language. The book then quickly progresses to more advanced concepts, followed by the architecture of applications and the FireMonkey library, guiding you through building server-side services, parallel programming, and database access. Toward the end, you'll learn how to integrate your app with various web services and deploy them effectively.</li>
<li>By the end of this book, you'll be adept at building powerful, cross-platform, native apps for iOS, Android, Windows, and macOS-all from a single code base.</li>
</ul>
<h3>What You Will Learn</h3>
<ul>
<li>Configure the Delphi IDE for mobile development, use Object Pascal, and build apps</li>
<li>Manage core Delphi technologies, including parallel programming, JSON, XML, and FireMonkey</li>
<li>Explore FireMonkey 3D features, UI styles, and mobile OS integration to build powerful apps</li>
<li>Extend your apps to desktop using the same source code and set of technologies to expand opportunities</li>
<li>Build web services integrate them with your UI for a holistic developer experience</li>
<li>Deploy apps to devices and online stores, streamlining distribution and facilitating monetization</li>
</ul>
<h3>Release is Tomorrow!</h3>
<p>The book is already available in ebook format at Amazon.com and worldwide Amazon stores and the printed edition can already be preordered. It ships tomorrow! </p>
<p>The book can also be found directly on Packt store, again shipping tomorrow:<br></br>
<a href="https://www.packtpub.com/product/expert-delphi-second-edition/9781805121107">https://www.packtpub.com/product/expert-delphi-second-edition/9781805121107</a>
</p>
<p>If you want to buy it on Amazon, you can follow this link: <a href="https://bit.ly/ExpertDelphi2">https://bit.ly/ExpertDelphi2</a>
</p>
<p>In the coming days, I'll share more information about the book, it's content and demos. Stay tuned.<br></br>
</p>
marcocantuhttp://www.marcocantu.comIt's 29! Delphi, I Meanhttp://blog.marcocantu.com/blog/2024-february-29-delphi.html2024-02-12T06:49:23.812Z2024-02-12T06:49:23.812ZDelphi was released 29 years today by Borland. And it's still alive and kicking.
<p>On February 14th, 1995, Borland showed Delphi publicly for the first time. As you might have heard (also it you joined yesterday's Embarcadero celebratory webinar) I was there.</p>
<p>
<img alt="" src="http://blog.marcocantu.com/images/forblog/delphi1.png" style="height:220px; width:319px"></img>
</p>
<p>Now, 29 years later, I'm still fairly busy using Delphi, along with tens of thousands of developers around the world, using recent or old versions of the product. Despite all odd and predictions, Delphi is still active, fully maintained, targets the latest operating systems on desktop, server and mobile. By comparison, very few of the dev tools of the 90ies are still around.</p>
<p>Moreover, the "RAD -> ROI" idea still applies, as Delphi can really amke you productive, even more in a multi-platform scenario</p>
<p>
<img alt="" src="https://blog.marcocantu.com/images/delphiads/image025.jpg" style="height:605px; width:454px"></img>
</p>
<p>If you are looking for old pictures, refer to past blog posts like:</p>
<ul>
<li>
<a href="https://blog.marcocantu.com/blog/2021-february-26-years.html">https://blog.marcocantu.com/blog/2021-february-26-years.html</a>
</li>
<li>
<a href="https://blog.marcocantu.com/blog/2019-february-24-years-delphi.html">https://blog.marcocantu.com/blog/2019-february-24-years-delphi.html</a>
</li>
<li>
<a href="https://blog.marcocantu.com/blog/2017-january-22years-delphi.html">https://blog.marcocantu.com/blog/2017-january-22years-delphi.html</a>
</li>
<li>
<a href="https://blog.marcocantu.com/blog/its_delphi_birthday.html">https://blog.marcocantu.com/blog/its_delphi_birthday.html</a>
</li>
<li>This is a video I recorded some time ago <a href="https://www.youtube.com/watch?v=XxRGNZfjYkM">https://www.youtube.com/watch?v=XxRGNZfjYkM</a>
</li>
<li>
<a href="https://www.marcocantu.com/delphibirth/">https://www.marcocantu.com/delphibirth/</a>
</li>
</ul>
<p>That's all for now. We sure need to make a big celebration next year!</p>
<p> </p>
<ul>
<li> </li>
</ul>
marcocantuhttp://www.marcocantu.comRAD Studio 12 GetIt Server is Alive with Packages, Along with RAD Studio 12.0 Patch 1http://blog.marcocantu.com/blog/2024-february-getit-12-server-patch-1.html2024-02-05T02:16:58.540Z2024-02-10T01:29:03.027ZEmbarcadero has rebuild the GetIt server for RAD Studio 12. Packages are available. Patch 1 is also online.
<p>See these two separate blog post announcements for more details:</p>
<p>
<a href="https://blogs.embarcadero.com/getit-update-additional-rad-studio-12-getit-packages-are-now-available/" target="_blank">https://blogs.embarcadero.com/getit-update-additional-rad-studio-12-getit-packages-are-now-available/</a>
</p>
<p>
<a href="https://blogs.embarcadero.com/rad-studio-12-athens-patch-1-available/" target="_blank">https://blogs.embarcadero.com/rad-studio-12-athens-patch-1-available/</a>
</p>
<p>Getting it back and hosted on AWS was fairly intensive work</p>
<h3>Feb 12 Update</h3>
<p>A new build of RAD Studio 12 has been release, see more information at <a href="https://blogs.embarcadero.com/getit-update-rad-studio-12-getit-online-installation-is-now-available/">https://blogs.embarcadero.com/getit-update-rad-studio-12-getit-online-installation-is-now-available/</a>
</p>
<p> </p>
marcocantuhttp://www.marcocantu.comTake the 2024 Delphi Surveyhttp://blog.marcocantu.com/blog/2024-january-take-2024-survey.html2024-01-13T05:00:24.448Z2024-01-13T05:00:24.448ZThe 2024 RAD Studio, Delphi, and C++Builder Developer Survey is open and will remain open only this week.
<p>Embarcadero has published a new, large developer survey, after a few years, and for the first time made it available in different language (spoken languages, not programming languages). Below is the official announcement from the <a href="https://blogs.embarcadero.com/join-the-2024-rad-studio-delphi-and-cbuilder-developer-survey/">Embarcadero blog</a>.</p>
<hr></hr>
<p>The 2024 RAD Studio, Delphi, and C++Builder developer survey has 59 questions and it should take about 20 minutes to complete. We know your time is valuable and so we greatly appreciate your participation in this survey, which is going to help us shape the future of the product. We haven’t done a large developer survey for some time, which makes this survey even more important for us.</p>
<p>This survey will remain open until <strong>January 21st 2024</strong> and it’s available in <strong>multiple languages</strong>. You can pick a language other than English in the combo box on the upper right corner of the first page. The additional available languages are:</p>
<ul>
<li>German</li>
<li>French</li>
<li>Spanish</li>
<li>Portuguese</li>
<li>Italian</li>
<li>Traditional Chinese</li>
<li>Simplified Chinese</li>
<li>Japanese</li>
<li>Korean</li>
</ul>
<p>The survey is available at <a href="https://www.surveymonkey.com/r/RADSurvey2024">
<strong>https://www.surveymonkey.com/r/RADSurvey2024</strong>
</a>
</p>
marcocantuhttp://www.marcocantu.comMy Year in Cities 2023http://blog.marcocantu.com/blog/year_cities_2023.html2023-12-27T13:28:26.074Z2023-12-27T13:28:26.074ZFollowing a long tradition of this blog, dating back to 2006 (and continued in each of the following years), here is my year 2023 seen through the cities I've been to.
<p>This is my end-of-the-year blog post listing places I've visited in 2023 for at least one night, in chronological order. At times, the reason for the trip is listed:</p>
<ul>
<li>Siena, Italy</li>
<li>San Mauro, Torino, Italy</li>
<li>London, UK, for an Embarcadero event</li>
<li>Verona, Italy</li>
<li>Salamanca, Spain for the International Pascal Congress</li>
<li>Courmayeur, Italy</li>
<li>Trient, Switzerland</li>
<li>Different mountain huts in Chamonix, France</li>
<li>Courmayeur, Italy</li>
<li>Middelfart, Denmark</li>
<li>Copenhagen, Denmark</li>
<li>London, UK</li>
<li>Lucca, Italy visiting Lucca Comics and Games</li>
<li>Dusseldorf (Germany) for the EKON conference</li>
<li>Athens, Greece</li>
</ul>
<p>Some trips were family vacations, some to Lego events, while work travel is still fairly low, but growing back a bit. We'll see what next year will take.</p>
<p>For the time being, let me with you a great 2024.</p>
marcocantuhttp://www.marcocantu.com3 x 12 IDE, Installer and Delphi Language Enhancements in Delphi 12http://blog.marcocantu.com/blog/2023-december-ide-language-delphi12.html2023-12-12T09:39:39.161Z2023-12-12T09:40:17.434ZFourth and last blog post of the series covering new features in Delphi 12
<h3>
<strong>12 times 12 new features in Delphi 12</strong>
</h3>
<p>RAD Studio 12 includes some great improvements for C++Builder and the launch webinar and other online content highlights it. However, it is also a fantastic release for Delphi developers. I compiled 12 lists with 12 improvements each for Delphi 12. So this is not a list of 12 improvements for Delphi 12. It's a list of 12x12=144 improvements, plus half a dozen for native Windows bringing the total to a whopping 150 -- excluding all the existing improvements for C++Builder, as here I want to underline the Delphi side (but most of the features below are in fact for both languages).</p>
<ul>
<li>The first blog post had 3 x 12 VCL Enhancements in Delphi 12, as you can read at <a href="https://blogs.embarcadero.com/3-x-12-vcl-enhancements-in-delphi-12/">https://blogs.embarcadero.com/3-x-12-vcl-enhancements-in-delphi-12/</a>.</li>
<li>The second blog post focused on FireMonkey and the Android platform support, as you can see at <a href="https://blogs.embarcadero.com/3-x-12-firemonkey-and-android-enhancements-in-delphi-12/">https://blogs.embarcadero.com/3-x-12-firemonkey-and-android-enhancements-in-delphi-12/</a>.</li>
<li>The third installment had three lists focused on three related areas, Delphi Runtime Library (RTL), database access, and Internet access, as you can see at <a href="https://blogs.embarcadero.com/3-x-12-rtl-data-and-internet-enhancements-in-delphi-12/">https://blogs.embarcadero.com/3-x-12-rtl-data-and-internet-enhancements-in-delphi-12/</a>
</li>
<li>This last blog post of the series has 12 entries each for the IDE, the installer, and the Delphi language. Plus a bonus 6 on Windows API integration, bringing the <strong>overall total to 150</strong>.</li>
</ul>
<h3>
<strong>In the IDE</strong>
</h3>
<ol>
<li>
<ol>
<li>The Find in Files dialog now has a new "Subdirectory exclude mask" option </li>
<li>Syntax highlighting has been added to Error Insight hints, Navigation toolbar, Call Stack </li>
<li>The Structure view syntax highlights methods and types and has syntax highlighting added to the Error Insight messages</li>
<li>The Options - IDE - Saving and Recovering page has a new checkbox to save the editor state</li>
<li>The Markdown window now changes colors when the IDE theme is changed</li>
<li>The Welcome Page now supports smooth mouse wheel scrolling</li>
<li>GDI bitmap counts is lower through the IDE as images are made dormant if not used for some time</li>
<li>Code templates and language keywords can now be displayed in Delphi LSP-based code completion</li>
<li>Code completion now adds array braces [ ] for array types</li>
<li>All Platforms Single Icon Wizard</li>
<li>PAServer messages, including hints, will be shown in the IDE Messages pane </li>
<li>New ToolsAPI, IOTARawEditReader interface<br></br>
<br></br>
<em>Below: The All Platforms Single Icon Wizard</em>
<br></br>
<img alt="144 singleicon" src="https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2023/12/144_singleicon-9996016.png?resize=496%2C440&ssl=1" style="height:440px; width:496px"></img>
</li>
</ol>
</li>
</ol>
<h3>
<strong>In GetIt and the Installer</strong>
</h3>
<ol>
<li>
<ol>
<li>The Platform Manager has been renamed to Feature Manager </li>
<li>The Feature Manager has a completely new UI, build with regular VCL controls and styles</li>
<li>The Feature Manager offers all options in a single page</li>
<li>The Feature Manager separates the languages and the platforms you want to install </li>
<li>The Feature Manager includes preset configurations for common scenarios like Desktop or Mobile</li>
<li>The Feature Manager has a new “Errors” button that shows installation errors directly and has a direct link to the error log file</li>
<li>The GetItCmd command line tool is now logging to the GetItInstall.log file</li>
<li>The GetIt package manager has the option to load multiple local GetIt packages with a single operation</li>
<li>The integrated version of DUnitX has been updated</li>
<li>The integrated version of Indy has been updated </li>
<li>The long deprecated VCL translations tools has been removed from the core product installation</li>
<li>The fairly old Modeling support has become an optional feature in the Feature Manager
<p>
<em>Below: The new Feature Manager window</em>
<br></br>
<img alt="144 managefeatures" src="https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2023/12/144_managefeatures-2692953.png?resize=582%2C388&ssl=1" style="height:388px; width:582px"></img>
</p>
</li>
</ol>
</li>
</ol>
<h3>
<strong>And, Finally, in the Delphi language</strong>
</h3>
<ol>
<li>
<ol>
<li>Long literal string With more than 255 characters</li>
<li>Multiline string literals</li>
<li>TEXTBLOCK directive to specify the line breaks format of multi line strings</li>
<li>NativeInt, a type mapped to Integer or Int64 depending on the platform, is now a weak type alias</li>
<li>Improved warnings in generic classes </li>
<li>New LLVM symbol defined in all LLVM-based Delphi compilers</li>
<li>Option to export the units uses graph in a GraphViz file (graphviz) </li>
<li>Ability to exclude family of units form the GraphViz file (graphviz-exclude)</li>
<li>Support for NaN (not a number) comparisons as required by IEEE</li>
<li>Optimized generated code for div operations when the divisor is a constant</li>
<li>Two new functions to the System unit, GetCompilerVersion and GetRTLVersion </li>
<li>Floating-Point Exceptions are now disabled by default on all Platform
<p>
<em>Below: Multiline Delphi string literals in the IDE<br></br>
<img alt="144 multiline" src="https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2023/12/144_multiline-2092261.png?resize=363%2C152&ssl=1" style="height:152px; width:363px"></img>
</em>
</p>
<p> </p>
</li>
</ol>
</li>
</ol>
<h3>
<strong>Bonus Section: In Windows Platform</strong>
</h3>
<ol>
<li>
<ol>
<li>New WinAPI definition based on WinMD Microsoft metadata (311 header files with 41 MB of Delphi code)</li>
<li>WinRT APIs and WebView 2 control API refreshed to the most recent version</li>
<li>Edge browser: UserAgent is available in ICoreWebView2Settings; ICoreWebView2Profile2 contains methods ClearBrowsingData, ClearBrowsingDataAll, and ClearBrowsingDataInTimeRange; TEdgeBrowser OnDownloadStarting event, NavigateWithWebResourceRequest method, Print and ShowPrintUI methods</li>
<li>New Windows 11 Styles</li>
<li>TForm class EnableImmersiveDarkMode method and RoundedCorners property for Windows 11</li>
<li>Title Bar support for Windows 11 snap layouts (see image below)
<p>
<em>Snap Layout for TitleBar work also for the IDE<br></br>
<img alt="144 ide snap" src="https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2023/12/144_ide_snap-2983797.png?resize=534%2C194&ssl=1" style="height:194px; width:534px"></img>
</em>
</p>
</li>
</ol>
</li>
</ol>
marcocantuhttp://www.marcocantu.com3 x 12 RTL, Data and Internet Enhancements in Delphi 12http://blog.marcocantu.com/blog/2023-december-rtl-delphi12.html2023-12-03T13:56:05.531Z2023-12-03T13:56:05.531ZThird blog post with 12x12 features for Delphi 12, this time focused on Delphi runtime libraries, including data and Internet
<h3>
<strong>12 times 12 new features in Delphi 12</strong>
</h3>
<p>RAD Studio 12 includes some great improvements for C++Builder and the launch webinar and other online content highlights it. However, it is also a fantastic release for Delphi developers. I compiled 12 lists with 12 improvements each for Delphi 12. So this is not a list of 12 improvements for Delphi 12. It's a list of 12x12=144 improvements, plus half a dozen for native Windows bringing the total to a whopping 150 -- excluding all the existing improvements for C++Builder, as here I want to underline the Delphi side (but most of the features below are in fact for both languages).</p>
<ul>
<li>The first blog post had 3 x 12 VCL Enhancements in Delphi 12, as you can read at <a href="https://blogs.embarcadero.com/3-x-12-vcl-enhancements-in-delphi-12/">https://blogs.embarcadero.com/3-x-12-vcl-enhancements-in-delphi-12/</a>.</li>
<li>The second blog post focused on FireMonkey and the Android platform support, as you can see at <a href="https://blogs.embarcadero.com/3-x-12-firemonkey-and-android-enhancements-in-delphi-12/">https://blogs.embarcadero.com/3-x-12-firemonkey-and-android-enhancements-in-delphi-12/</a>.</li>
<li>This third installment of the series has three lists focused on three related areas, Delphi Runtime Library (RTL), database access, and Internet access. For each of these three areas, I'm listing 12 new features below.</li>
</ul>
<h3>
<strong>Delphi RTL</strong>
</h3>
<ol>
<li>
<ol>
<li>For TList and descendant classes, the "List Index out of bounds" error message was enhanced to include the index being used and the valid range</li>
<li>New TArray methods: IndexOf, LastIndexOf, Contains</li>
<li>New TEncoding.UseBOM property to disable the requirement for a BOM in Unicode text files: TEncoding.IsBufferValid methods to check if a given buffer contains valid data for a given encoding</li>
<li>More colors in System.UIConsts.Colors</li>
<li>TStream gives better error messages when writing to a full disk</li>
<li>TValue.FromVariant supports arrays</li>
<li>Added TZipHeader.ModifiedTime, support for Deflate64 in TZipFile, added an IZipCryptor interface, with methods Decrypt and Encrypt</li>
<li>TThreadPool.InitializeCOM and InitializeCOMFlags properties</li>
<li>TThreadPool.OnThreadStart and OnThreadTerminate events</li>
<li>TPath.GetDesktopPath and TPath.GetAppPath</li>
<li>New enumerators for reading file content: TFile.GetLinesEnumerator and TTextReader</li>
<li>Expanded the FormatXMLData function<br></br>
<br></br>
<img alt="144 indexoutofbounds" src="https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2023/12/144_indexoutofbounds-7519788.png?resize=573%2C320&ssl=1" style="height:320px; width:573px"></img>
</li>
</ol>
</li>
</ol>
<p>
<em>The TStringList list index out of bounds error message adds the index and the valid range, both reading and writing to a list</em>
</p>
<h3>
<strong>Data, FireDAC and more</strong>
</h3>
<ol>
<li>
<ol>
<li>Blob fields management improvements</li>
<li>FireDAC SQLite has been expanded with support for newer versions of SQLite, but offering also the old version with FireDAC encryption support</li>
<li>QBE (query by example) support with new TFDQBE component, this is a new way to build queries based on end user input</li>
<li>New property in the FireDAC connection CommandsExecuted</li>
<li>FireDAC adds support for Decimal128 in MongoDB</li>
<li>SpellChecking has been made available also for TDBRichEdit</li>
<li>FireDAC added support for {INTO } escape sequence for SQL Server</li>
<li>Improved TBlobField display logic</li>
<li>FireDAC Security options (TFDSecurityOptions): AllowedCommandKinds, AllowMultiCommands, AllowSQLChange, ExactUpdatedRecsNum</li>
<li>Embedded InterBase versions for the Delphi iOS Simulator platform</li>
<li>SQLite support for version 3.42</li>
<li>JSON Data Binding Wizard and JSON mapping improvements<br></br>
<br></br>
<img alt="screenshot 2023 11 06 at 10 36 07 pm" src="https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2023/11/Screenshot-2023-11-06-at-103607-PM-2104060.png?resize=380%2C382&ssl=1" style="height:382px; width:380px"></img>
</li>
</ol>
</li>
</ol>
<p>
<em>The new JSON Data Binding Wizard in Delphi 12</em>
</p>
<h3>
<strong>Internet Libraries</strong>
</h3>
<ol>
<li>
<ol>
<li>TWinHTTPClient.DoExecuteRequest method supports data transfer of more than 4 GB</li>
<li>Added support for HTTP DELETE method with content</li>
<li>RESTRequest accepts multipart ContentType (plus TMultipartFormData.AddStream overload method)</li>
<li>Added a new OnBeforeExecute event in TCustomRESTRequest</li>
<li>Better redirect and cookie management with THTTPClient.OnRedirect, THTTPClient.OnUpdateCookie, TNetHTTPClient.OnRedirect, TNetHTTPClient.OnUpdateCookie</li>
<li>New TProxyAggregateStream class (In System.Classes)</li>
<li>Curl support for platforms other than Linux, including Windows</li>
<li>Ability to access data while it is received in an HTTP (or REST) request with THTTPRequest.OnReceiveDataEx</li>
<li>RAD Server Performance Improvement (with the FastMM5)</li>
<li>RAD Server paging Improvements: TEMSDataSetResource.PageSize, TEMSDataSetResource.PageSizeParamName, TEMSDataSetResouceOption.roEnablePageSizing</li>
<li>Squid encoding Library and support for using Sqids for URLs in RAD Server</li>
<li>Improved RAD Server Session Authentication (TCustomBackendAuth.ExportLogin,TCustomBackendAuth.ImportLogin)</li>
</ol>
</li>
</ol>
marcocantuhttp://www.marcocantu.comTurbo Pascal turns 40http://blog.marcocantu.com/blog/2023-november-turbopascal40.html2023-11-28T16:17:41.214Z2023-11-28T16:17:41.214ZTurbo Pascal was introduced by Borland in November 1983. It's officially turning 40 years old this month.
<p>Turbo Pascal was a milestone product for the industry, it started Borland as a company and it was the first popular Integrated Development Environment or IDE. It was a great product for the time, and its success was incredible.</p>
<p>You can read more about Turbo Pascal it in this recent blog post from <a href="https://blogs.embarcadero.com/i-first-met-philippe-kahn-and-turbo-pascal-40-years-ago-this-month/">David I</a>, but also on <a href="https://en.wikipedia.org/wiki/Turbo_Pascal">Wikipedia</a> and many other sources including <a href="https://blog.marcocantu.com/blog/2021-march-50years-pascal.html">blog posts</a> of mine, including the <a href="https://blog.marcocantu.com/blog/2023-july-niklaus-wirth-prize-acceptance-speech.html">talk I did this summer</a> in the first Pascal World Congress in Salamanca.</p>
<p>At Embarcadero, the company continuing working on the successors of Turbo Pascal, we just shipped <a href="https://www.embarcadero.com/products/rad-studio/whats-new-in-12-athens">version 36</a> of that compiler. In fact when you read "Embarcadero Delphi for Win32 compiler version 36.0" (the version of the command line compiler in Delphi 12 Athens) the compiler version number, 36, dates back to the first Turbo Pascal. Not only that, we decided to dedicate the product Easter Egg to this great anniversary.</p>
<p>
<strong>Happy 40th birthday, Turbo Pascal!</strong>
</p>
<p>
<img alt="" src="http://blog.marcocantu.com/images/forblog/turbopascal40.png" style="height:536px; width:784px"></img>
</p>
marcocantuhttp://www.marcocantu.com3 x 12 FireMonkey and Android Enhancements in Delphi 12http://blog.marcocantu.com/blog/2023-november-fmx-delphi-12.html2023-11-25T17:12:31.676Z2023-11-25T17:12:31.676ZThere are so many new features in Delphi 12, I decided to compile a list or, actually, 12 lists. Here is the second batch.
<h3>
<strong>12 times 12 new features in Delphi 12</strong>
</h3>
<p>RAD Studio 12 includes some great improvements for C++Builder and the launch webinar and other online content highlights it. However, it is also a fantastic release for Delphi developers. I compiled 12 lists with 12 improvements each for Delphi 12. So this is not a list of 12 improvements for Delphi 12. It's a list of 12 x 12=144 improvements, plus half a dozen for native Windows bringing the total to a whopping 150 -- excluding all the existing improvements for C++Builder, as here I want to underline the Delphi side (but most of the features below are in fact for both languages).</p>
<p>The first blog post had 3 x 12 VCL Enhancements in Delphi 12. This second one blog post is focused on FireMonkey and the Android platform support. The FireMonkey changes apply also to C++Builder 12, unless they are mobile specific, in which case they are for Delphi only. Stay tuned for two more blog posts.</p>
<h3>
<strong>Skia in FireMonkey</strong>
</h3>
<ol>
<li>
<ol>
<li>Skia.pas unit offers direct access to the Skia library</li>
<li>TSkAnimatedImage component for FireMonkey with support for Lottie, Telegram Sticker, Animated GIF and Animated WebP formats</li>
<li>TSkLabel component for FireMonkey</li>
<li>TSkPaintBox component for FireMonkey</li>
<li>TSkAnimatedPaintBox component for FireMonkey</li>
<li>TSkSvg control for FireMonkey to easily display SVG easily. </li>
<li>FMX.Skia.GlobalUseSkia setting to enable app rendering using Skia</li>
<li>FMX.Types.GlobalUseVulkan setting to enable using the Vulcan driver in Skia</li>
<li>Effects and Filters can use Skia Shading Language (SKSL) </li>
<li>Support for Printer on Windows</li>
<li>Support for printing to PDF on Android and iOS</li>
<li>Support for WebP image format
<p>
<em>The SkLabel Skia control at design time</em>
<br></br>
<img alt="screenshot 2023 11 06 at 10 35 12 pm" src="https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2023/11/Screenshot-2023-11-06-at-103512-PM-9329386.png?resize=423%2C273&ssl=1" style="height:273px; width:423px"></img>
</p>
</li>
</ol>
</li>
</ol>
<h3>
<strong>Other FMX new features</strong>
</h3>
<ol>
<li>
<ol>
<li>FireMonkey Split Screen Support in Android and iOS</li>
<li>New TEdit property AutoSelect and CharCase </li>
<li>The recently added TUndoManager is shared between TEdit and TMemo. In addition, TEdit now supports Undo functionality</li>
<li>Refactoring Virtual Keyboard for iOS</li>
<li>New HeaderSettings property for the TColumn class</li>
<li>Enabled FireMonkey to remove the TCanvas global lock</li>
<li>Expanded FMX multitouch support by adding these new fields to the TTouch data type</li>
<li>New TWinFormPositionerService to help FMX manage the screen(s) layout and positions</li>
<li>New IFMXPlatformPropertiesService</li>
<li>New universal TFontManager for Windows and macOS</li>
<li>New OnFreeStyleLookup event has been added to TStyledControl</li>
<li>New FireMonkey Windows 11 style
<p>
<em>Split views screen support, in this case on Android</em>
<br></br>
<img alt="111 splitview" src="https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2023/11/111_splitview-2169666.png?resize=245%2C548&ssl=1" style="height:548px; width:245px"></img>
</p>
</li>
</ol>
</li>
</ol>
<h3>
<strong>In Android platform</strong>
</h3>
<ol>
<li>
<ol>
<li>Android target API level 33</li>
<li>Support for the Android Scoped Storage model</li>
<li>Updated the JManifest_permissionClass and JManifest_permission_groupClass classes </li>
<li>IFMXExtendedClipboardService update to allow applications to prevent sensitive content from appearing in the clipboard editor overlay introduced in Android 13</li>
<li>Support for the new Android Splash Screen standard </li>
<li>Support for Android Adaptive Icon format</li>
<li>Updated the Application - Uses Permissions options page</li>
<li>Upgraded FireMonkey Android in-app purchases support to depend on the latest version of the Google Play Billing library (6.0.1)</li>
<li>Implementations of the IFMXCameraService and IFMXTakenImageService platform services have been redone </li>
<li>The TTakePhotoFromLibraryAction and the TTakePhotoFromCameraAction have been extended leveraging the changes above, with new OnDidFailTaking event, new PickerPresentation property and more</li>
<li>Added selection Point for position cursor in TMemo and TEdit.</li>
<li>Added CaretPoint display for text-input controls for Android</li>
</ol>
</li>
</ol>
marcocantuhttp://www.marcocantu.com3 x 12 VCL Enhancements in Delphi 12http://blog.marcocantu.com/blog/2023-november-vcl-delphi-12.html2023-11-19T17:19:50.943Z2023-11-19T17:19:50.943ZThere are so many new features in Delphi 12, I decided to compile a list or, actually, 12 lists. Here are the first 3.
<h1>
<strong>12 times 12 new features in Delphi 12</strong>
</h1>
<p>RAD Studio 12 includes some great improvements for C++Builder and the launch webinar and other online content highlights it. However, it is also a fantastic release for Delphi developers. Someone commented, it looks like there is little for VCL. That's not true. I don't remember a new release with so many new VCL features. So I started listing them and got 36 bullet points (in this blog post), including some very significant changes and a few minor, but still relevant, improvements. Plus many FireMonkey ones. And dozens of other improvements in the RTL, the Delphi language, the IDE, the installer, the internet libraries. I compiled a dozen improvements for each of these areas.</p>
<p>In the end, I compiled 12 lists with 12 improvements each for Delphi 12. So this is not a list of 12 improvements for Delphi 12. It's a list of 12 x 12 = 144 improvements, plus half a dozen for native Windows bringing the total to a whopping 150 -- excluding all the existing improvements for C++Builder, as here I want to underline the Delphi side (but most of the features below are in fact for both languages).</p>
<p>Ready? This is the first blog post of my<strong>12 x 12 features for Delphi 12</strong> list, with 3 lists. These 36 are all VCL improvements. All of these equally apply to C++Builder 12 and RAD Studio 12. Stay tuned for more blog posts.</p>
<h3>
<strong>In VCL: MDI and Forms management</strong>
</h3>
<ol>
<li>MDI Reworked for HighDPI and VCL Styles support</li>
<li>Child forms can now have a new modern flat border (the new property is TStyleManager.ChangeChildFormSystemBorder)</li>
<li>MDI Child disabled border icons are not drawn</li>
<li>The Parent property works for nesting any form in any other form, with full border management</li>
<li>A significant MDI cleanup and improvements</li>
<li>The brand new TFormsBar control</li>
<li>The Auto Hiding of minimized child windows</li>
<li>The IFormVisualManager Interface </li>
<li>The VisualManager property of the TCustomForm class</li>
<li>The updated MDI Wizard</li>
<li>A new ShowInTaskbar property for TForm</li>
<li>A new CreateScaledNew constructor in the TCustomForm class</li>
</ol>
<p> </p>
<p>
<em>The MDI app generated by the wizard</em>
</p>
<p>
<img alt="144 mdi" src="https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2023/11/144_MDI-1356872.png?resize=642%2C353&ssl=1" style="height:353px; width:642px"></img>
</p>
<h3>
<strong>VCL foundations and designers</strong>
</h3>
<ol>
<li>TFont.Size property adapts to different DPIs: new TFont.IsDPIRelated, TFont.IsScreenFont, TFont.ChangeScale method, TFont.ScaleForDPI method </li>
<li>A new String List editor</li>
<li>A multiline string editor</li>
<li>A Quick Panel configuration</li>
<li>A Quick Radio Group configuration</li>
<li>A Quick Button configuration</li>
<li>The Control child enumerator accessible via GetControls method of the TControl class</li>
<li>New MsgDlgIcons global variable</li>
<li>New TDoubleBufferedMode enumerated type, new DoubleBufferedMode property of that type, and a new CanUseDoubleBuffering method for controls</li>
<li>New TWinControl ChildHandlesNeeded method</li>
<li>The VCL StyleAPI.inc file is now replaced by two specific and clean units: Vcl.StyleAPI.pas and Vcl.StyleBitmap.pas</li>
<li>Additional image formats in TImage via Skia</li>
</ol>
<p> </p>
<p>
<em>The new string list editor</em>
</p>
<p>
<img alt="144 listeditor" src="https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2023/11/144_listeditor-8017585.png?resize=491%2C361&ssl=1" style="height:361px; width:491px"></img>
</p>
<p> </p>
<h3>
<strong>VCL Controls</strong>
</h3>
<ol>
<li>Tile View support to TListView (including new TileOptions and TileColumns properties)</li>
<li>TGroupCollection now has two Items properties</li>
<li>New ToolButton style: tbsWholeDropDown</li>
<li>TNumberbox control has an additional “nbmInt64” mode accepting 64-bit numbers in input</li>
<li>ActivityIndicator has support for custom color (IndicatorCustomColor property), new RotatingLines and Refresh predefined icons and more enhacements </li>
<li>TControlList has new SelectedItemsCount and SmoothMouseWheelScrolling properties</li>
<li>TControlList adds support for more element types such as TControlListCheckBox and TControlListRadioButton </li>
<li>TWICImage and TImageCollection now have a Dormant() method to reduce GDI usage</li>
<li>The new TSkLabel Skia-based component for VCL</li>
<li>The new TSkPaintBox Skia-based component for VCL</li>
<li>The new TSkAnimatedPaintBox Skia-based component for VCL</li>
<li>The new TSkSvg Skia-based component for VCL</li>
</ol>
<p> </p>
<p>
<em>The new Activity Indicator predefined icons</em>
</p>
<p>
<img alt="144 activity" src="https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2023/11/144_activity-7628840.png?resize=449%2C102&ssl=1" style="height:102px; width:449px"></img>
</p>