Noutați

Getting Started with InterBase for RAD Users

Most, if not all, of your applications will connect to some database backend.  For Delphi and C++Builder users, most have either used it previously or have heard of it. InterBase is a zero admin, small footprint database engine that offers enterprise grade database capabilities like granular transparent database encryption, powerful access control, point-in-time recovery and patented data change tracking. It’s the database running across a range of industries, from POS systems to medical laboratories and CRM to railway systems. In fact, even RAD Server uses an InterBase database for the storage of user information, user groups, analytics, registered devices, version information, registered Edge Modules, push notification messages and more. So why not see if it can further your development efforts. What’s to lose? It’s included in your RAD Studio license. How do I use InterBase for RAD Development? All versions of RAD Studio/Delphi/C++Builder come with support for InterBase 2020 databases. InterBase 2020 is installed with RAD Studio in the following directory: C:\Program Files (x86)\Embarcadero\Studio\20.0\InterBase2020 Installing and Starting the InterBase Server In the additional options of the web installer for RAD Studio, check and install the InterBase Developer Edition and InterBase Express Components. InterBase 2020 Developer Edition is installed with RAD Studio, Delphi or C++Builder and is in the RAD Studio integrated license. Choose Start | Programs | Embarcadero InterBase 2020 | 64-bit/32-bit instance = gds_db | InterBase Server Manager [instance = gds_db] On the InterBase 2020 64 Server Manager, start the InterBase server if it is not running Connecting to InterBase Connecting to the server and database will require entering the host, port, database user and password. InterBase databases are defaulted to the port 3050 or 3051 and provide the default system administrator user, SYSDBA (not case-sensitive) with a password of masterkey (all lowercase). Note: It is recommended that you change the SYSDBA password for improved security. IBConsole IBConsole is a simple, yet powerful and complete system for managing InterBase servers and databases. IBConsole lets you look into the details of the database structure, query the data, backup and restore the database, and perform any other admin tasks.  For more on what IBConsole can do, click here Command Line isql tool The command-line isql is a utility for processing SQL data definition (DDL) and data manipulation (DML) statements from interactive input or from a source file. It enables you to create and view metadata, add and modify data, grant user permissions, test queries, and perform database administration tasks. For more on invoking isql, click here. Developing Database Applications Delphi includes many components for accessing databases and representing the information they contain. They are typically grouped by their access mechanism. The two recommended data access components are: FireDAC FireDAC is the set of standard data-access and data-aware visual components for developing with various database systems including InterBase. FireDAC is designed to deal with real-world high load applications and enables the developer to concentrate on developing the application, not on the complexities of database interaction InterBase Express InterBase Express components or IBX, is a set of custom data aware components and controls that allow you to connect to and access data from InterBase servers and databases. Applications built using IBX components should work better and faster (even if only marginally), giving you more control over the specific features of the server.  The components are broken down into two sections, the IBX Dataset components and Administrative Components.  Using IBLite and InterBase […]

Read More

GetIt Package Manager

GetIt Package Manager Enhancements Coming in RAD Studio 10.4 RAD Studio has a light weight package manager, a mechanism for downloading additional product features, add-on libraries and components, demos, VCL and FMX styles and more. Some of the content is provided by Embarcadero, but a lot comes from our community of developers and third-party vendors. Now in the coming 10.4 release of Delphi and C++Builder, the GetIt Package manager is going to see significant changes in 10.4. The key addition is that now each entry has an associated release date, technically a timestamp. This is the foundation of different features: the ability of sorting the list of entries by date, seeing the most recent ones on top for each entry you have already installed, the indication that an updated version is available the ability to list all installed entries that have an update available Updated Filters In terms of UI change, the Filter section of the GetIt dialog UI will be modified: We are removing older, inactive filters (like Free and Paid) and keeping 2 options offering 2 new ones: All for all entries Installed for the packages installed on the current system Subscription only is a new filter for exclusive content published by Embarcadero and limited to customers with an active update subscription license Updates lists packages installed on the current system and for which a new release is available (that is a package with a newer timestamp than the installed version timestamp) This is the updates filter in action: Another change is in the Sort By section of the GetIt Dialog box, which is going to have a new option to sort packages by release date (or timestamp). GetIt Entries UI The UI of the individual entry in the GetIt dialog will also be modified to indicate the specific date the package was published and (eventually) the date you installed that package. Depending on the status, the entry UI includes new buttons for the action(s) — there are now more actions available, including Updating a package. Here you can see the standard UI for an entry and the same after the package has been installed and an update has been made available: Notice that the two dates indicated in the last image are the release date of the last update and the release date of the one currently installed (the timestamp of the installed item, not the date it was installed). RAD Studio Patches Another key feature we are enabling in 10.4 is the ability to use GetIt to distribute patches, with a specific way to alert customers that a patch is available. We’ve added a new section to the Welcome page to indicate when a patch is available and you have not installed it: Once installed, that indication will disappear. Combined to this Welcome page hint, we’ll have a new category in the GetIt package manager for patches. But this is not the only related change. We have technically introduced a deferred installation mode, so that a patch requiring to update files used by the RAD Studio IDE itself can be installed by a separate process once you close RAD Studio (or as you restart it). This will account for the installation of more complex patches, that require you to close RAD Studio first. Additional GetIt Features Beside the features […]

Read More

TMS WEB Core for Visual Studio Code

TMS WEB Core for Visual Studio Code beta is ready for TMS ALL-ACCESS users. On July 26, 2018, we released the first version of TMS WEB Core for the Delphi IDE, hereby offering a RADically new way for creating web applications directly from the Delphi IDE. RADically different because TMS WEB Core offers RAD component based rich web client application development thanks to the technology of compiling the Object Pascal code to JavaScript with the pas2js compiler. The next step was to also enable using TMS WEB Core from the Lazarus IDE with the first version introduced in October 2018. At the same time, TMS WEB Core was extended with support for creating PWA’s, which is progressive web applications, meaning web applications that can be installed on mobile devices or Chrome desktop browsers, run offline, and access several parts of the device hardware. In a later step, February 2019, we announced support for creating cross-platform desktop applications via the Electron framework. On November 15, 2019, we unveiled that TMS WEB Core was also coming to Visual Studio Code. And now, today, after a huge amount of intensive work, we feel confident to give our baby in the hands of TMS ALL-ACCESS users. It took more time than expected to reach this level as the challenges turned out to be quite complex. Challenges we couldn’t have coped without having the absolute best engineers on board. In the first place, José Leon Serna, the architect of the IDE integration into Visual Studio Code, Roman Kassebaum overlooking and ensuring the Visual Studio Code integration works on 3 operating systems and remains compatible with Delphi’s project management, the pas2js compiler team assisting with debugging integration, the framework team itself taking up the huge task for making the UI controls all design-time editable. Let’s go back to the WHY of taking up this huge & challenging task. Before embarking on this project, José Leon Serna, former Embarcadero IDE architect and head of the engineering team in Spain, and myself mutually shared the vision that Visual Studio Code offered a couple of unique technical features that could potentially make it an ideal candidate for using it for TMS WEB Core web client development. Visual Studio Code is based on web technology. Visual Studio Code is an Electron application and internally, everything is rendered via web views. This makes it ideal to offer design-time live rendering of the forms designed by TMS WEB Core. This is the primary driver. But there are nice additional benefits coming with Visual Studio Code. So, in a nutshell, key decision factors for our endeavour were: Based on web technology, offers a live web rendered designer form Is cross-platform, Visual Studio Code can be used on Windows, macOS, Linux Designed to be extended via plugins with seamless plugin ‘marketplace’ distribution A powerful established Pascal code editing plugin OmniPascal is already available It is a high-DPI compliant IDE Features built-in mechanisms for debugging of applications running in a browser It features side-by-side editing, multi-view code editor windows that can be freely arranged It has a very low barrier of entry, as Visual Studio Code itself is free and open-source Just like our support for Lazarus adds freedom of choice, the capability to use Visual Studio Code now is extra freedom of choice. Of course, this won’t stop nor influence our plans for TMS WEB Core for Delphi. Version 1.4 of TMS WEB Core […]

Read More

Nou în Delphi 10.4: Redesigned Code Insight

What do we mean by Code Insight? First, some background. If you’re familiar with Code Insight, skip ahead… Code Insight is our name for a set of IDE productivity features in the editor. For the purposes of this blog post, those features are: Code Completion: the dropdown list box that predicts what you want to type. Appears when you type a period (.) after an identifier, or when you press Ctrl+Space. Parameter Completion: the hint that appears showing the parameters for a method, including multiple variations for an overloaded method. Ctrl+Shift+Space inside method braces (). Find Declaration: right-click on an identifier and click Find Declaration, and it will take you to where that method, variable, type etc is defined. You can also hold Control down and move your mouse over the editor, and applicable identifiers will turn into hyperlinks you can click on to find their declaration, which is known as Code Browsing. Tooltip Insight: hover your mouse over a variable or type, and you will be shown information about it. Sometimes this includes XMLDoc, and is known as Help Insight. (We need to clarify names in our doc.) Error Insight: displays errors in your code before you compile. These are otherwise known as ‘red squigglies’, many people’s preferred terminology – the red zigzag lines under your code. Errors are also shown in the Errors node in the Structure view. These features have been available in Delphi for many years. Features like this are a key benefit to you when coding an IDE. Code completion especially saves a lot of typing, and error insight helps you make sure your code is working before you spend time compiling. Classic Code Insight As the language has grown and time has passed, these features have no longer always worked as well as we have wanted. The technology was cutting-edge when it was introduced, but there were definite improvements we could make today. It’s been common to see bug reports about spurious errors (ie errors reported in the editor or in the Structure view when the source code is actually perfectly correct code.) Or that the IDE worked in the main thread, so would not respond to keystrokes while it was working to show the code completion list. (You could only press Escape to cancel.) Sometimes, for gigantic projects, calculating the data for code completion could use a lot of memory in the IDE. In addition, the features were implemented with multiple code parsers: code completion and error insight each had a different understanding of the code. And finally, code insight was disabled while debugging, so if you wrote code while debugging you had no productivity assistance. We did not want this to continue. Our goals for 10.4 have been to: Make Code Insight asynchronous – that is, run on another thread or in another process (or both) so that the IDE is always responsive when you type even if it’s doing work in the background Reduce or even completely remove (you can see where this is going) the potential memory usage for code completion from the IDE Ensure Error Insight always gives correct results – that is, it should give exactly the errors the compiler would, and correct code should show no errors Help us move closer to having a single parser for Delphi source in the IDE, so that there is a ‘single source of truth’ or single understanding […]

Read More

Nou în Delphi 10.4 – Custom Managed Records

What is a Custom Managed Record in Delphi? Records in Delphi can have fields of any data type. When a record has plain (non-managed) fields, like numeric or other enumerated values there isn’t much to do for the compiler. Creating and disposing the record consists of allocating memory or getting rid of the memory location. (Notice that by default Delphi does not zero-initialize records.) If a record has a field of a type managed by the compiler (like a string or an interface), the compiler needs to inject extra code to manage the initialization or finalization. A string, for example, is reference counted so when the record goes out of scope the string inside the record needs to have its reference count decreased, which might lead to de-allocating the memory for the string. Therefore, when you are using such a managed record in a section of the code, the compiler automatically adds a try-finally block around that code, and makes sure the data is cleared even in case of an exception. This has been the case for a long time. In other words, managed records have been part of the Delphi language. Records with Initialize and Finalize Operators  Now in Delphi 10.4 record type supports custom initialization and finalization, beyond the default operations the compiler does for managed records. You can declare a record with custom initialization and finalization code regardless of the data type of its fields, and you can write such custom initialization and finalization code. This is achieved by adding specific, new operators to the record type (you can have one without the other if you want).Below is a simple code snippet: type TMyRecord = record Value: Integer; class operator Initialize (out Dest: TMyRecord); class operator Finalize(var Dest: TMyRecord); end; You need to write the code for the two class methods, of course, for example logging their execution or initializing the record value — here we are also logging a reference to memory location, to see which record is performing each individual operation: class operator TMyRecord.Initialize (out Dest: TMyRecord); begin Dest.Value := 10; Log(‘created’ + IntToHex (Integer(Pointer(@Dest))))); end; class operator TMyRecord.Finalize(var Dest: TMyRecord); begin Log(‘destroyed’ + IntToHex (Integer(Pointer(@Dest))))); end; The huge difference between this construction mechanism and what was previously available for records is the automatic invocation. If you write something like the code below, you can invoke both the initializer and the finalizer, and end up with a try-finally block generated by the compiler for your managed record instance. procedure LocalVarTest; var my1: TMyRecord; begin Log (my1.Value.ToString); end; With this code you’ll get a log like: created 0019F2A8 10 destroyed 0019F2A8 Another scenario is the use of inline variables, like in: begin var t: TMyRecord; Log(t.Value.ToString); which gets you the same sequence in the log.  The Assign Operator The := assignment flatly copies all of the data of the record fields. While this is a reasonable default, when you have custom data fields and custom initialization you might want to change this behavior. This is why for Custom Managed Records you can also define an assignment operator. The new operator is invoked with the := syntax, but defined as Assign: class operator Assign (var Dest: TMyRecord; const [ref] Src: TMyRecord); The operator definition must follow very precise rules, including having the first parameter as a reference […]

Read More

Nou în RAD Studio 10.4 VCL Per-Control Styles

In the past, the VCL library allowed a developer to select one style (or no style) for the entire application. Starting with RAD Studio 10.4 VCL library will allow you to use multiple VCL styles at the same time in different forms of your applications, or even different controls of the same form. You can also mixed styles of elements (controls and form) and elements using the Windows default platform theme. This feature is controlled by a new StyleName property for the TControl class. This property takes as value the name of one of the styles active for the application and applies the style to the given control. If the property is empty, the parent control style is used: so if you set the property for a form, all controls in the form take the form style by default. A Quick Demo As the name implies, per-control styling allows a developer to apply different styles for controls and forms in the same application. To start, you need to add multiple styles to an application, and you can use all of them. This feature works only if one of the VCL Styles is active. First, add multiple styles to an app (hint, in RAD Studio 10.4 VCL you can use the new high-dpi styles, that’s for another blog post): Now set different styles names for different controls in a form, like in the following DFM file (I kept only key relevant properties here): object Form2: TForm2  StyleName = ‘Sky’  object Panel1: TPanel    StyleName = ‘Light’    object Button1: TButton…    object Button3: TButton      StyleName = ‘Sky’    end  end  object Button2: TButton    StyleName = ‘Windows’  end  object Button4: TButton    StyleName = ‘Luna’  end  object Button5: TButton    StyleName = ‘Aqua Graphite’  endend Notice that Button1 takes the hosting panel style, while Button2 resets the style to the form one. Finally, ‘Windows’ is a special purpose value, as described below. With this code, here is the UI of a form with 5 buttons using 5 different styles: A Few Rules for RAD Studio 10.4 VCL There are different approaches you can use to to adjust the style of the different forms and controls of a VCL application: 1. Adjust style list in project options (but you can also load styles at runtime). 2. Use the TControl.StyleName property to define the specific style for each control or each form. The StyleName value must be one of the names of the styles in the project options. A control can use the StyleName defined for its parent control, so you can set the StyleName property of a form to have specific style used by all controls on it. Additional cases: By default, TControl.StyleName is empty and control uses a default style. You can set StyleName as ‘Windows’ to disable applying any style for control or form. If you set a style name that is not among the loaded VCL styles, then the control will use default style. 3. You can define a specific style also for common dialogs. Use the property  TStyleManager.DialogsStyleName for that. By default, it is empty and common dialogs use the default style of the application. 4. You can define the application style as ‘Windows’. This means that if some control or form has an empty StyleName property, then it will always use ‘Windows’ style and VCL Style will be always […]

Read More

RAD Studio 10.4 With New VCL TEdgeBrowser Component

RAD Studio 10.4 is going to bring support for working with web content through a new Chromium-based Edge browser control in VCL applications. The new TEdgeBrowser component wraps the Microsoft WebView2 component. TEdgeBrowser supersedes TWebBrowser, which uses the Internet Explorer WebBrowser browser control. However, TWebBrowser remains in the VCL component set, with some notable changes (see below). TEdgeBrowser Requirements Because TWebBrowser uses the Operating System-supplied Internet Explorer WebBrowser browser control there is no preparation required – it will work wherever Windows has the Internet Explorer control available. On the contrary, Microsoft Edge is not an Operating System component (not yet, anyway). Also, it is still not officially released. Because of this, you need to ensure that these items are installed on your computer before you can run an application that uses it: The Microsoft Edge Chromium-based browser is currently available from https://www.microsoftedgeinsider.com/download (Canary channel version whilst the WebView2 SDK is in pre-release).  The WebView2 control, currently available through NuGet at https://www.nuget.org/packages/Microsoft.Web.WebView2 or via a matching GetIt package manager For the time being, Edge Canary is requirement applies to you compiling and executing the application on your development machine and also on the end user’s machine. As for the WebView2, all you need id a DLL that currently needs to be distributed along with your program. Both are Microsoft requirements and binaries, and they might change with the official release. Once you have installed Edge (Canary version) to install the required Microsoft WebView2 package you open the GetIt package manager window in the RAD Studio 10.4 IDE and search for the corresponding entry, as indicated below: Once you have installed the package, it will copy in your RAD Studio redistributable folder the DLL required by your application, one for 32-bit apps and one for 64-bit apps (both are called WebView2Loader.dll). You will need to copy this DLLs in your build target folders or someone on the search path. Using the Edge Browser component You use the TEdgeBrowser component in much the same way as you would use a TWebBrowser, indeed a number of methods and properties are similar to those of TWebBrowser’s methods and properties. Drop the component on a VCL form and size it as appropriate, as in the simple case below: To navigate to a URL simply pass that URL to the Navigate method: EdgeBrowser1.Navigate(‘https://www.embarcadero.com’); That’s all, run the application and you see the following output: And What About TWebBrowser? The VCL TWebBrowser component still performs the same job as always, which is to render web content using the Internet Explorer WebBrowser browser control. However, in addition to this default behavior it has a new property, SelectedEngine, which can be used to ask it to use the newer Edge (Chromium) WebView2 browser control instead if available on the target machine.  The advantage is to have a single browser control that can work on all Windows computers, and also a higher level of compatibility (in terms of browser component of methods and properties used) with the existing code. The advantage of the new Edge control is you have more power to customize this new engine.

Read More

OpenJDK for Android in Delphi Development

You may not know this, but Java comes in many flavors and parts. After Oracle acquired Sun Microsystems, they became the official owner of the Java trademark and the main “official” Java distributions. First off a disclaimer: I’m not a lawyer, nor am I a Java developer. This is a high-level overview of a number of complex issues related to Java, Java development, and licensing. My goal is to give you enough information to move forward and be successful, but I encourage you to do some additional research and consult a lawyer if you need additional information. I know that I will miss details and gloss over important points. Java is made up of the following parts JVM: The Java Virtual Machine is the virtual machine that runs all Java applets. Java applets are usually distributed as Java bytecode in a JAR file. Java bytecode doesn’t run natively on the physical computer. Instead, it runs on the JVM. The JVM is a Just-in-Time compiler (JIT) that converts the Java bytecode into native machine code. The two popular flavors of the JVM are Hotspot (the official JVM used by the Oracle JDK) and OpenJ9. Technically Android doesn’t have a JVM. Instead, the Java bytecode is converted into Dalvik bytecode and run on the DVM (Dalvik Virtual Machine) or compiled by ART (Android Runtime). Both use .dex files, but ART translates the bytecode into .elf (Executable and Linkable Format) files. This article is mostly focused on the Java desktop side for building Android apps with Delphi, but I wanted to add this aside for clarity. JRE: The Java Runtime Environment contains the main libraries a Java applet needs to run, along with the JVM. It includes Java.exe and Javaw.exe that run the applets and other utilities. JDK: The Java Development Kit, or the SDK for Java development. The JDK is a superset of the JRE. This is what you use for building Java (and Android) applications, while it also provides everything you need to run Java applets. It includes a number of utilities like KeyTool.exe and JarSigner.exe used to make  There are 3 variants of the Java platform released by Oracle: Standard Edition (Java SE), Enterprise Edition (Java EE), and Micro Edition (Java ME). This blog post, and most use cases you will encounter, involve the Standard Edition. Where it gets interesting is with the OpenJDK, a free and open-source implementation of the Java Standard Edition (SE) Platform. It is the official reference implementation of Java SE since version 7. The source implementation is licensed under the GNU General Public License version 2 with a linking exception. [wikipedia] Similar to how Chrome is based on the open-source Chromium project, Java SE is based on OpenJDK. Anyone, yourself included, could download the OpenJDK source files and create a binary build. There are a number of organizations that do that, and each one has its own spin on licensing, support, and included components. Here are a few (these are binary distributions of the OpenJDK source). Build Long TermSupport PermissiveLicense Pure Commercial Support AdoptOpenJDK / JClarity / IBM Java SDK Yes Yes Optional Yes Alibaba Dragonwell Yes Yes No Yes Amazon Corretto Yes Yes No No Azul Zulu Yes Yes No Yes BellSoft Liberica JDK Yes Yes No Yes ojdkbuild Yes Yes Yes No Oracle Java SE Yes No No Yes Oracle OpenJDK No Yes […]

Read More

Embarcadero TERM Licenses

Embarcadero TERM Licenses este popunerea poducătorului de IDE Delphi și C++, Embarcadero LTD pentru clienții săi existenți și potențiali pentru optimizarea bugetelor pentru soluții de softwar edevelopment. Când vine vorba de licențiere de produse software, organizațiile doresc să maximizeze flexibilitatea și gestionabilitatea, reducând în același timp costurile. Flexibilitate înseamnă utilizarea software-ului oriunde și oricând, pe o mașină autorizată, de către un utilizator autorizat. Gestionabilitatea necesită controlul, auditul și raportarea privind utilizarea licenței. În plus, cerințele de reglementare și conformitate impun prevederi și restricții suplimentare pentru urmărirea accesului la software. Embarcadero oferă o varietate de opțiuni de licențiere, astfel încât organizațiile să își poată gestiona mai ușor software-ul, asigurându-le în același timp instrumentele de care au nevoie.  Pe lângă tipurile bine cunoscute de licențe, disponibile până acum – Named, Network named și Concurrent, recent a fost adăugată și opțiunea de subscripție anuală numită de către Embarcadero TERM License Named  (1 Year term) Named Embarcadero TERM Licenses prezintă o subscripție limitată în timp pentru o perioadă de un an calendaristic, care oferă dreptul utilizării celei mai recente versiuni a soluțiilor Delphi și C++ Builder cu suportul și mentenanța incluse. La expirarea termenului propus există opțiuni de prelungire anuală la același preț sau anulare utilizare. Opțiunea de TERM License este disponibilă pentru soluțiile Delphi Enterprise și C++ Builder Enterprise. Apelați la echipa noastră de vânzări pentru mai multe informațiii și oferte de pret.

Read More

Oferta Pre-Lansare Embarcadero RAD Studio 10.4 !

Embarcadero RAD Studio 10.4 Sydney este cea mai recentă ediție a soluțiilor noastre cu funcționalități noi avansate care Vă vor ajuta mult în procesul de dezvoltare, testare și implemntare a aplicațiilor moderne și în limitele bugetului alocat. Deoarece sunteți client și membru al comunității de dezvoltatori, am lansat special pentru Dvs o ofertă promoțională pentru soluțiile RAD Studio, Delphi, and C++Builder. Embarcadero RAD Studio 10.4 Sydney include o mulțime de funcționalități și înbunătățiri în cele trei produse principale ale noastre (RAD Studio, Delphi și C ++ Builder), oferind VCL pentru aplicațiile Windows 10, FireMonkey pentru dezvoltarea Delphi pentru mai multe tipuri de dispozitive, îmbunătățiri ale productivității dezvoltatorilor la IDE și multe altele! Nu putem împărtăși până când toate detaliile, dar … Solicitați oferta promo: Acum este momentul potrivit pentru a face upgrade la Embarcadero RAD Studio 10.4! Vă gândiți la modernizarea soluțiilor existente? Platformele de programare continuă să se dezvolte. Tehnologiile la fel nu stau pe loc și permanent se dezvoltă. Aplicațiile Dvs create în trecut mai funcționează, dar cum vor sta în perioadele următoare? Sunteți pregătit pentru viitor? Nu vă lăsați depășit de noile tehnologii c! Lansăm oferta de pre-sales pentru RAD Studio 10.4! Actualizați-vă soluțiile existente sau procurați licențe noi acum la pret special și ve-ți primi ediția 10.4 imediat cum va fi lansată plus orice altă versiune nouă, lansată pe parcursul unui an! Noul Code Insight din Delphi 10.4 rezolvă o mulțime de probleme și face din utilizarea IDE o experiență mult mai plăcută și mai receptivă și pentru dvs. Nu mai vorbim de rezultatele suplimentare, care pot fi extrem de utile. Este planificată și continuarea lucrului pentru a merge mai departe prin obiectivele scrise mai sus. Cu toate acestea, în 10.4, noi și testatorii noștri beta am descoperit că este un plus excelent la IDE. În plus, am adăugat chiar două funcții noi: permițându-vă să explorați codul dvs. prin completarea codului și folosind Code Insight, inclusiv completarea codului și alte funcții Code Insight în timp ce depanați. RAD Studio The ultimate IDE with features both C++ and Delphi developers love: code, debug, test and fast design for cross-platform mobile and desktop deployment. Delphi IDE Trusted for over 24 years, our modern Delphi is the preferred choice of Object Pascal developers worldwide for creating cool apps across devices. C++ Builder IDE The most productive C++ development toolkit, including powerful IDE and frameworks for UI, connectivity, and much more. Build C++ applications 10x faster with less code.

Read More