Noutați

How Are Delphi And Electron Licenses Alike And How Do They Differ?

Delphi and Electron licenses differ significantly. In fact in some ways they are diametrically opposed. The benchmarking study sited in this blog post and the entire series of which it is the seventh post looks at the similarities and differences between the two platforms. Read more below. The “Discovering The Best Cross-Platform Framework Through Benchmarking” whitepaper evaluates two frameworks supporting multi-platform desktop application development: Delphi and Electron. Delphi Delphi, encapsulated in the Rapid Application Development (RAD) Studio IDE, is Embarcadero Technologies’ flagship product. A proprietary version of the Object Pascal language, Delphi features graphical application development with “drag and drop” components, a WYSIWYG viewer for most mobile platforms, and robust style options including platform-standard and unique palettes that provide a fully customized look and feel. Among other features, included libraries provide GUI controls, database access managers, and direct access target platform hardware and platform operating systems. The Delphi FireMonkey (FMX) framework will compile projects to native code for 32-bit and 64-bit Windows, macOS, Android, iOS, and Linux, allowing users to develop and maintain one codebase reaching most of the market. Delphi has been available for over 25 years. Electron Electron is an open-source (MIT License), Chromium-based framework that utilizes web technologies to build desktop applications on Windows, macOS, and Linux. It is developed and maintained by GitHub, a subsidiary of Microsoft. Electron combines the Chromium-based rendering engine with a Node.js server environment. As such, the user interface for an Electron application is available via HTML5 and CSS. Generally, Electron works with most Javascript frameworks such as Angular, Vue.js, and React. The HTML5, CSS, and Javascript-based technologies found in Chromium provide a rich ecosystem of user customization familiar to any web developer. Despite its relatively young age of five years, its community boasts open source packages for database access, operating system interactions, and other common tasks. 26 Benchmarking Metrics This is the seventh in a 26-part series of blog posts looking more closely at each of the individual metrics used in the study, and how Delphi and Electron each fared on these metrics. The first can be found here. Download the complete whitepaper here Benchmark Category: Functionality Functionality Framework functionality was examined qualitatively through research on the business aspects of each framework ranging from initial investment through long-term maintenance of the products created. Business functionality refers to a framework’s business suitability and impact on long-term plans. Excellent functionality allows companies to easily build custom tools or extensions, develop on a platform of their choosing, protect their source code from exploitation, and have confidence that their applications will be maintainable for decades. Benchmark Metric 7/26: License License: Does the framework’s IDE facilitate direct deployment to native platform application stores (i.e. iOS App Store, Android’s Google Play, Microsoft Store)? Frameworks with built-in deployment features reduce product deployment complexity, limiting errors that could occur or compound, and time-to-market for initial products and updates/bug-fixes. Benchmarking Results Delphi Score: 3 (out of 5) Delphi is a proprietary software with three paid license tiers and a free Community Edition and Academic Program. The free tier allows for development as long as annual revenue does not exceed $5,000 USD per year. The first license for full commercial use costs $1,599 USD and the tier that fully unlocks the software suite is priced at $5,999 USD at the time […]

Read More

The C++Builder 25th Anniversary: Visual Development, the Power of the C++ Language and 2.5 decades of Continuing Excellence

Delphi version 1 was launched at the Software Development Conference in San Francisco on February 14, 1995. I and other team members would travel around the world giving demonstrations of the IDE, Object Pascal language, VCL components and database connectivity. When Delphi was released, one of the frequently asked questions was, “where is the Borland C++ version”. At that time we were shipping Borland C++ with its support for building C++ applications, using Object Windows Library (OWL), Microsoft Foundation Classes (MFC) and other C++ libraries and code. Meanwhile, back at the Borland R&D department,  a team was busy working on what would become C++Builder. Previews and a Release At the Comdex expo in Las Vegas in November of 1996, in the Borland booth and in meetings, we started previewing a test version of C++Builder. Then in January 1997, we let the C++ development world know they could take part in a preview release of C++Builder. Finally, on February 23, 1997, a press release announced that C++Builder was finally available for purchase. Three editions of C++Builder were available: Standard, Professional and Client Server. C++Builder was (at that time) the only Rapid Application Development tool for C++ that combined visual component based development with the power of the C++ language. Some Steps Leading Up To C++Builder’s release The release of C++Builder built on top of IDE, compiler, runtime library and database access development for both the C and C++ languages. Those products included: Turbo C for DOS Turbo C++ for DOS and Windows Borland C++ for DOS and Windows Delphi versions 1 and 2 Hitting the Road with C++Builder After the release of C++Builder version 1 we hit the road again to demonstrate C++Builder. Borland’s C and C++ developer community was finally able to take advantage of the power of the C++ language and visual component based development to build console, desktop GUI and Client/Server database applications. C++Builder version 1 supported building applications that ran on Windows 95 and Windows NT. For the next 2.5+ decades we continued to release new versions of C++Builder with ever increasing language, library, component and platform support. The first demo we would show was a C++ version of the same first Delphi application that was shown at the launch of Delphi 1. The project contained a form with a button, edit box and list box. The event handler code for the button click event was add the contents of the edit box to the items in the list box. The IDE also supported integrated debugging with breakpoints, inspectors and evaluators. C++Builder Version 1: A Short YouTube Video I’ve put together a short video (available on YouTube) that shows building this one line C++ application using C++Builder version 1 Client Server edition running on Windows 95. C++Builder Version 1 running on Windows 95 YouTube Video (2 minutes and 28 seconds) The C++Builder Team Easter Egg inside the Help About Box Just as in Delphi version 1, C++Builder 1 contained a team member easter egg in the Help About Box. Holding down the ALT key and typing the letters TEAM brought up a scrolling list of all of the team members that worked on the product including those from R&D, QA, Documentation, Localization, Product Management, Product Marketing, Marketing, Developer Support and Developer Relations. Here is a complete list […]

Read More

A Step-by-Step Guide To An Extjs Tutorial For Beginners

ExtJS stands for Extended Javascript and it is a Javascript framework built based on the Yahoo User Interface(YUI).  It’s a standalone application development framework with a sophisticated user interface. This article is an Extjs Tutorial For Beginners that will help you to get started with the framework. How to download and set up Ext JS? 1. Using your registered email address, download the Ext JS trial version using this link.  2. Download the Zip folder and Unzip it and you will get CSS and Javascript files. After unpacking the folder, you must double-click the.exe file to begin the installer. 3. Go through the installer wizard to complete the installation process. The following CSS and Javascript files are included in the library. File Description ext-all.js There are no comments in this file because it contains the detruncate code. ext.js The application’s base file contains all of the application’s functionalities. ext-all-dev.js It’s also a development-related detruncate file. It includes comments and console logs, which aid in error detection. ext-all-debug.js This file is used for debugging. ext-all.js This file is for development purposes only.   You’ll also find the relevant theme-based files in the unzipped folder, which you’ll need to include with the application. These files can be found under the ‘ext7.2.0.84-windowsext-7.2.0.84buildclassictheme-classicresourcestheme-classic-all.css’ folder. Mobile application – required to use a modern theme and it can be found under ‘ext-7.2.0.84 ext-7.2.0.84buildmodern’ folder. Desktop application – required to use classic theme and it can be found under ‘ ext-7.2.0.84 ext-7.2.0.84buildclassic’ folder. You can include the CSS files listed below in your Ext JS application. Also, you can alternatively save the Ext Js application’s code inside a file called app.js as given below.                                 Can I use Ext JS through a CDN? You can use Ext JS through a CDN without downloading the files to your computer. You can do it with the following code.                               What browsers are supported to run Ext JS applications? Ext JS is cross-browser compatible and it works with all browsers mentioned below.  Chrome Safari Firefox Opera Internet Explorer What are the naming conventions followed in Ext JS? Ext JS uses the normal JavaScript naming system, which isn’t required but is a recommended practice to maintain. Some of the basics are given below, Name Convention Class Starts with an uppercase, followed by camel case (StudentClass) Method Starts with lowercase, follower by camel case (doWrite()) Variable Starts with lowercase, follower by camel case (studentName) Constant Uppercase only (VALUE) Property Starts with lowercase, follower by camel case   What is the project structure and how does it works? Ext JS follows MVC/ MVVM (Model View Controller / Model View Viewmodel) architecture. The image below shows the structure of a typical project.  In the MVVM design, the ViewModel replaces the controller. To understand how Ext JS works, suppose we use one model object in several places of the user interface. If we update the value in one location of the UI, we can notice the modification even without storing the values. The model’s value changes, and this is displayed in almost all of the UI’s locations in which the model is being used. How to build our first program? Let’s start off with a simple […]

Read More

TMS MemInsight, Delphi runtime memory inspection: statistics and filters

Using TMS MemInsight is easy: drop a component on your form, set some properties and there you go. Altough the component and UI of TMS MemInsight are currently based on the VCL you can already use it in your FireMonkey (on Windows and without UI), Windows service or console applications or any other headless application, such as a TMX XData server. But in this blog, we dive deeper: TMS MemInsight has a wide API and offers all of its options and features by code. Let’s start by looking at some of the properties of the memory profiler first. To access it, as well as other parts of TMS MemInsight, use the units TMS.MI.Access and TMS.MI.Memory from within your code. These units contain some functions which serve as entry point to gain access to the interfaces needed to control tracing, filters as well as more advanced options like collecting memory statistics as it’s done within the UI. Another handy unit is TMS.MI.Core which offers some ready to use utility functions. You can enable/disable the profiler by setting it’s Active property. You can Suspend/Resume profiling for the current thread by calling the methods of the same name or exclude them completely to control and tune what is being traced. For this, TMS MemInsight also offers filters which allow for even more fine tuning. Filters can also be customized and attached and removed dynamically. The folder “Dev” contains a sample for such a filter which allows tracing of objects contained in certain units only. We will use it in our example below. Another useful method is SuspendMethod which disables tracing for the current thread until the current scope is exited. Usually this is, as the name suggests, the current method, although this has slightly changed in Delphi 11 Alexandria with the introduction of inline variables where the scope might be limited to the current begin/end block. The memory profiler includes three different filters. The Default filter allows to configure, which threads are being traced as well as setting the TraceTypes: mtString, mtObject, mtArray, mtRecord and mtUnknown. Beside of that you can, if your applications is build using run-time packages, select which package classes are shown. The IncludeFilter and ExcludeFilter allow fine grained tracing considering the class name of objects and supports pattern matching. This way you can limit the tracing to certain class names as well as class names matching something like “TYourPrefix*” or exclude class names matching similar patterns. All filters can be activated/deactivated by setting their Active property. You can store and reload these configurations for latter use. Let’s jump right into our first example: collecting memory statistics and dumping them into a file. Working with these statistics is, in almost all cases, my starting point when trying to understand why, where and what the application is consuming. As this is happening during run-time I can use the application, repeat certain functions and observe its behavior to isolate and concentrate on concrete spots. Limiting the tracing on these identified classes by using the above mentioned filters is also helpful. For the sake of this example we create five utility functions: InitializeProfiling, StartProfiling, StopProfiling, ResetStatistics and SaveToFile. InitializeProfiling will set up some default options and attach and configure the filter as well as the memory statistics. We also disable stack traces as […]

Read More

TMS WEB Core for Visual Studio Code 1.9.7.0 released

We’re happy to announce that with the new release of TMS WEB Core for Visual Studio Code, we stepped up the level of web client application development with Object Pascal. The key goals of this new release 1.9.7.0 are: Introduce visual form inheritance Framework synchronization with TMS WEB Core for Delphi Increased robustness, compatibility and stability Improved coding experience thanks to a new OmniPascal update Visual form inheritance Now you can take advantage of the visual form inheritance feature also from the TMS WEB Core Visual Studio Code IDE. This means you can design a form and created an inherited form and use base form class and inherited form live visually in the IDE. Any changes you apply to the base class will be immediately visible in the descending form class and modifications to the descending class are nicely managed and persisted. Using visual form inheritance should significantly increase your productivity when you deal with web application form logic with repeating patterns. See for yourself how this visual form inheritance feature is used in the IDE: Framework synchronization with TMS WEB Core for Delphi In the new release, all latest features & improvements of the TMS WEB Core framework are adopted in TMS WEB Core for Visual Studio Code. This includes: New : geMemo editor type added in TWebStringGrid New : WordWrap property added in TWebStringGrid New : TWebResponsiveGrid.OnGetItemTemplate event added New : Support for custom images added in TWebDBNavigator New : SelectCell() added in TWebTableControl New : ScrollRowInView() added in TWebTableControl New : MultiSelect option added to TWebResponsiveGrid New : Miletus use of USB UART on Raspberry Pi New : Miletus extensibility through libraries New : Hyperlinks clickable with Ctrl key in TWebRichEditToolbar New : Hyperlink button added in TWebRichEditToolbar New : FindCellFindNext functions added in TWebTableControl New : Filtering capability added in TWebTableControl TWebDBTableControl       + various smaller improvements and fixes. Given that the TMS WEB Core framework under TMS WEB Core for Visual Studio Code is identical to TMS WEB Core for Delphi, this means you can perfectly continue development projects handled by other team members in Delphi also from Visual Studio Code and vice versa.  Increased robustness, compatibility and stability. While TMS WEB Core for Visual Studio Code is younger than the version for Delphi, it comes with the additional challenge that it has a web technology based form designer. This means that it uses a full WYSIWYG form designer that also uses HTML elements or complete HTML templates live on the form designer. You can understand this brings increased complexities to manage in the designer and we focused on improving the experience at design-time in this new release. Improvements were done to the framework to handle this design-time situation better and we significantly extended the number of tests run from within the IDE itself to guarantee stability & compatibility. This new release should move this a significant step forward. Improved coding experience thanks to a new OmniPascal update Not really a part of this new TMS WEB Core for Visual Studio Code 1.9.7.0 release, but the new OmniPascal version will still improve your coding experience while developing in TMS WEB Core for Visual Studio Code. We worked together with the author of OmniPascal. This Visual Studio Code plugin provides code completion & highlighting […]

Read More

The Top 5 Misconceptions About Windows Program Development

The Windows operating system is the most used desktop operating system in the World. Windows 11 launched with a substantial firestorm of publicity from Microsoft. With the new innovations such as the excellent Windows Subsystem For Linux (WSL) there seems to be a large uptick in interest from coders looking to Windows program development. Microsoft have consolidated their position as the dominant desktop operating system and by incorporating increasingly innovative features such as Android support and the WSL Windows is in a very strong position to beat back challenges from those who are looking toward devices like Chromebooks and Linux on the desktop. Accompanying that ethos of modernization Microsoft turned their attention toward the look and feel of Window’s user interface. The Microsoft Fluent Design System introduced a new UI/UX to the Windows OS ecosystem. It was a lighter, more modern ‘feel’ to the controls and embraced many of the stylistic ideals from the likes of Apple and Android. The current Windows program development industry is embracing the open platform, and this means everyone has unrestricted access to run the most comprehensive range of apps on Windows. This open platform also enables developers to build the apps and experiences that empower users to create, learn, and play. Video courtesy of Microsoft.com We can see lots of improvements in these three areas for Windows 11: The Fluent Design System & the new Microsoft Store News for Game Developers and Gamers Advances in end-to-end Web development along with new features for native Windows apps. The new Microsoft Store on Windows announced that it accepts more app types, like Win32, .NET, and PWAs, and support for Android apps from Amazon Appstore. This all creates a new collection of complex development tools that you should know. You might already think about how complicated it gets, but with Delphi, everything becomes much easier. In 1995 Delphi was acclaimed as the next-generation Windows development tool, blending the most intuitive visual design environment with the unrivaled performance of a world-class optimizing native code compiler. With Delphi, you can create apps for all major platforms with less coding effort. You can target Windows, Android, iOS, macOS, Linux, and Web with your single codebase. If you search for a Windows desktop development tool online, you come across web technologies that offer desktop development. But these tools force you to learn many technologies to create a simple application. Moreover, it is hard to understand, and applications built with web technologies do not offer your product pure device performance and security. Delphi’s RAD Studio provides native app development 5x faster than other development tools. The syntax of the Delphi language is friendly, and it is like giving commands to the computer using plain English. I’m pretty sure that in several hours you can learn all the basic details of the Delphi programming language and its visual development tools and start developing cross-platform native GUI applications. For instance, this Delphi Boot Camp helps you to learn: Delphi IDE and Intro to your first app Delphi Language from basics to advanced How to build compelling user interfaces with FireMonkey Game Development with Delphi and FireMonkey Mobile and Database Development and more! Is it hard to deploy a Windows app to the Microsoft Store? Since we have lots of different technologies and the Microsoft Store […]

Read More

Embarcadero MVP Jens Fudge on FlexCel

TMS FlexCel is one of our flagship products, with well over 20 years of development going into it and meanwhile supporting the near entire Microsoft Excel feature set and as development tools Delphi, C++Builder and .NET via C#, VB.NET or .. actually any Windows language that can use DLL’s via TMS FlexCel DLL.  While FlexCel can be used to read and write .XLS and .XLSX files extremely fast, on-the-fly and most importantly, without the need to have Microsoft Excel installed, it can actually also being used as a reporting tool where it generates Excel, PDF, HTML, SVG, Image files… with  report templates defined in an Excel file and possibly also data coming from an Excel file. Today, we bring you a fantastic opportunity to discover how Jens Fudge, Embarcadero MVP in Denmark, frequent speaker at Delphi conferences uses FlexCel. Jens is not only Delphi expert, he was also Paralympic Champion Archery and still heavily involved with archery and training top sportspeople. And that’s not all, Jens runs his own Delphi development consulting company and published in 2020 also a book “Choose to be a Winner” about adopting a winning mindset for sports people but equally applicable to anyone wanting to get more out of life.  See in this video how Jens Fudge created score cards as reports from archery competition results using FlexCel: If you feel like discovering more of the power of FlexCel, Jens informed us that he was involved in setting up a one hour webinar for the Danish Delphi user group in March. So, stay tuned, as soon as we have the final information on this webinar, we’ll inform so you can also register and attend this webinar! 

Read More

Final Build Times With Delphi And Electron – Benchmark Study

The final build time metric in the “Discovering The Best Cross-Platform Framework Through Benchmarking” whitepaper measures the total amount of time required for the framework to produce the final build for the benchmark application. The whitepaper evaluates two frameworks supporting multi-platform desktop application development: Delphi and Electron. This is the fourth in a series of blog posts looking more closely at each of the 26 individual metrics used in the study, and how Delphi and Electron each fared on these metrics. The first can be found here. Download the complete whitepaper here Benchmark Category: Developer Productivity Developer productivity is the measure of effort and code required for developers to complete typical development tasks. Productivity directly impacts product time-to-market and long-term labor costs so tools that increase developer productivity have substantial impacts on business timelines and bottom lines. Productivity can be realized in two distinct ways – reduced coding requirements due to native libraries, and IDE tools like code-completion and visual design.IDEs with greater library breadth generally result in fewer lines of code per application and produce a clean, lean codebase that minimizes opportunities for bugs or maintenance problems later in the product life cycle. Benchmark Metric 4/26: Final Build Time Final Build Time: Total hours required to “speedrun” the application using a known solution. This measures the number of actions and volume of code required to complete the full application by an expert developer with perfect knowledge of a working solution. Productive frameworks reduce development time on repetitive but slightly altered tasks. Benchmarking Results Delphi Score: 5 (out of 5) Electron Score: 3 (out of 5) Once complete, the Electron application was “speedrun” in half the time of the Delphi application despite requiring almost twice as many lines of developer-typed code. This is largely because Delphi’s IDE provides visual application development [P2] through drag-and-drop components, decreasing the complexity of GUI creation at the cost of increased time configuring components. Delphi exhibited strength in other areas, however. Its database and network code composed only 46% of developer-typed lines compared to 61% for Electron, a clear indication that Delphi’s FireDAC database library and network tools abstract those operations better than Node.JS, reducing developer effort and opportunities for error. Overall, similar results in the initial development phase made Delphi and Electron appear equivalent. This conclusion changed after amending the specification to add internal unit tests. Once the contractors sufficiently understood the test requirements, the Delphi application was modified andaccepted in 8.33 hours of work. The Electron application, on the other hand, took 47.8 hours to add the same functionality. Although the Electron developer implemented the test features in his development environment within 28.6 hours, troubleshooting a variety of Javascript and database library errors occurring on the client machines (Windows, macOS, Linux) nearly doubled the delivery time of the amended RSS reader to 47.8 hours. Download the complete whitepaper here

Read More

Code Size Benchmark Comparison Between Delphi And Electron

Code size is a simple metric that compares the number of lines of code required to create the benchmark application in the study. The “Discovering The Best Cross-Platform Framework Through Benchmarking” whitepaper evaluates two frameworks supporting multi-platform desktop application development: Delphi and Electron. This is the fifth in a series of blog posts looking more closely at each of the 26 individual metrics used in the study, and how Delphi and Electron each fared on these metrics. The first can be found here. Download the complete whitepaper here Benchmark Category: Developer Productivity Developer productivity is the measure of effort and code required for developers to complete typical development tasks. Productivity directly impacts product time-to-market and long-term labor costs so tools that increase developer productivity have substantial impacts on business timelines and bottom lines. Productivity can be realized in two distinct ways – reduced coding requirements due to native libraries, and IDE tools like code-completion and visual design.IDEs with greater library breadth generally result in fewer lines of code per application and produce a clean, lean codebase that minimizes opportunities for bugs or maintenance problems later in the product life cycle. Framework productivity was evaluated according to six metrics that sought to capture howframeworks and IDEs improve product time-to-market. Benchmark Metric 5/26: Code Size Code Size: Total lines of code the developer must write, adhering to accepted formatting and styles, to create a fully functional application. This objective measure of code volume sheds light on the difficulty of future code maintenance – more code typically requires more time to learn and troubleshoot. Benchmarking Results Delphi Score: 5 (out of 5) The Delphi FMX RSS reader required 178 lines of typed code total and 97 lines for the GUI (54%). Electron Score: 3 (out of 5) The Electron RSS reader required 293 lines of typed code total and 115 lines for the GUI (39%). Download the complete whitepaper here

Read More

Alister Christie And Serge Pilko Talk Delphi, Part 2 of 3: Farms And Books

On 12 January Serge Pilko, Embarcadero MVP and founder of Softacom, a world leading Delphi software development services and software solutions provider, published a video of his interview with Alister Christie, author of the legendary “Code Faster in Delphi” and the creator of hundreds of videos that have shown many of today’s Delphi developers around the world how to program and accomplish things with Delphi. Download Code Faster in Delphi for free here Alister also has an upcoming book, “Code Better in Delphi”, scheduled to hit bookstores soon. We have chosen to publish the transcript of their conversation in a three-part series of blog posts, of which this is the second. Read the first part here Alister Christie And Serge Pilko Talk Delphi, Part 2 of 3 Serge For me, because I am also creating some content for me, it’s interesting. Where are you getting your ideas for your videos nowadays? Because… Alister Sometimes it’s just, you know, I’ll stumble across something that’s interesting. So now we might make a video on it. Other times, you know.. sometimes YouTube comments, a source of video content. Serge Okay. Alister Or maybe someone else’s blog, post an idea for something. Serge Do you have any personal messages from people? For example, you posted some video, then they are trying to reach you somehow. I don’t know. Alister Yeah. I get, you know, a fair number of comments, Youtube comments, and occasionally I’ll get messaged. Quite often, LinkedIn is often the best way to get in touch with me. I’m Allister Christy on that. Serge Are you answering their questions? Because for example, sometimes we are posting something about Delphi and FireMonkey, and we have a lot of haters for Delphi, saying “stop, you’re providing wrong ideas, it’s dead, stop, you’re a liar. I’m just ignoring such kinds of comments. Alister I tend to get much negative. I often get comments that I talk too fast, which I definitely do, and I can’t help it. This is just my normal talking speed. I try to slow down a little bit for recording videos, but it can be hard to concentrate on so many different things when recording. Yeah, that one gets lost, I just end up talking fast, but yeah. ideas.  Yeah. Like the Deepstack one that was just, you know, I saw that Blue Iris, which is a security software I used was using it for doing object detection for providing alerts. And I thought “that obviously has an API. I wonder if you can access it in Delphi”, and of course, you know, has a  REST…, so it was pretty trivial to work it out. Serge Your format, like short videos, you think this is the best way for getting information or it’s more convenient for you? For example, for me, it’s not easy to find and prepare a huge video to deeply explain some subject. What about you? Because for you it’s easy, or you think it’s useful for the people, because they want long videos, because…? Alister Yeah, I, most, most of my videos are short. I mean, I’ve had to do DelphiCon, Coderage and that kind of stuff, and they took about an hour, 45 minutes to an hour, maybe half an hour. And usually, to produce an hour of […]

Read More