Noutați

Learn About Executing Local SQL Queries Within Your Delphi Apps Using FireDAC

The FireDAC.TFDLocalSQL MegaFMX sample is divided in three tabs where each tab demonstrates single Local SQL usage case. Each tab has dedicated SQLite in-memory connection established using the TFDConnection with only single parameter DriverID=SQLite. When no Database parameter value is specified then FireDAC SQLite driver opens an in-memory connection. It will be used as a Local SQL engine. The TFDLocalSQL component for each page serves as a hub to Local SQL engine, allowing to register datasets with the Local SQL engine. Also there is a TMemo where the Local SQL query is defined before executing it using a TFDQuery component. The TFDLocalSQL.Connection and TFDQuery.Connection properties are set to the same SQLite in-memory TFDConnection. Visual components such as the TGrid and the TBindNavigator are bind to the TFDQuery using Live Bindings. Location You can find the MegaFMX sample project at: Start | Programs | Embarcadero RAD Studio Sydney | Samples and then navigate to: Object PascalDataBaseFireDACSamplesComp LayerTFDLocalSQLMegaFMX. Subversion Repository: You can find Delphi code samples in GitHub Repositories. Search by name into the samples repositories according to your RAD Studio version. How to Use the Sample Navigate to the location given above and open: Press F9 or choose Run > Run. Move to the different tabs. Click Open to open the connection and see the content on the grid. Note: You can navigate through the records with the TDBNavigators. Implementation The sample is divided in tabs. The TFDMemTables are defined and filled with data by code. CSV DB (dyna) The first page represents the Comma-Separated Values (CSV) text file database with SQL query capabilities. The text files are stored in C:UsersPublicDocumentsEmbarcaderoStudio15.0SamplesObject PascalDatabaseFireDACDBData folder. The FDConnection1 provides SQLite in-memory connection. For that DriverName property is set to SQLite. The FDLocalSQL1.Connection and the FDQuery1.Connection are set to the FDConnection1. Clicking Open, inserts the lines of the Memo1 on the FDQuery1 and executes the Local SQL query: procedure TfrmMain.Button1Click(Sender: TObject); begin FDQuery1.Close; FDQuery1.SQL := Memo1.Lines; FDQuery1.Open; end; procedure TfrmMain.Button1Click(Sender: TObject); begin   FDQuery1.Close;   FDQuery1.SQL := Memo1.Lines;   FDQuery1.Open; end; Is shows the result on the Grid1 grid. Heterogeneous Query (dyna) The second page represents the ability to perform a heterogeneous SQL query, where several joined tables are prefixed by a schema name. There a schema name corresponds to a FireDAC connection definition name. The connection definitions are stored in the C:UsersPublicDocumentsEmbarcaderoStudioFireDACFDConnectionsDefs.ini file. So, the tables with different schema names will be obtained from the different (heterogeneous) database connections. The basic setup is similar to first page. Each schema name is handled by a dedicated TFDLocalSQL component. For that the property TFDLocalSQL.SchemaName is used: FDLocalSQL2 = SQLite_Demo FDLocalSQL3 = Access_Demo. The FDLocalSQL2 and FDLocalSQL3 OnGetDataSet event handlers are used to dynamically resolve a reference to an unknown table name and to provide a dataset with the data. For that event handler creates TFDQuery component and sets it ConnectionName to the schema name and SQL property to select * from table query: procedure TfrmMain.FDLocalSQL2GetDataSet(ASender: TObject; const ASchemaName, AName: String; var ADataSet: TDataSet; var AOwned: Boolean); var oQry: TFDQuery; begin oQry := TFDQuery.Create(nil); try oQry.Name := AName; oQry.ConnectionName := ASchemaName; oQry.SQL.Text := ‘select * from ‘ + AName; oQry.Open; except oQry.Free; raise; end; ADataSet := oQry; AOwned := True; end; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 procedure TfrmMain.FDLocalSQL2GetDataSet(ASender: TObject; const ASchemaName,   AName: String; var ADataSet: TDataSet; var AOwned: Boolean); var   oQry: TFDQuery; begin   oQry := TFDQuery.Create(nil);   try     oQry.Name := AName;     oQry.ConnectionName := ASchemaName;     oQry.SQL.Text := ‘select * from ‘ + AName;     oQry.Open;   except     oQry.Free;     raise;   end;   ADataSet := oQry;   AOwned := True; end; Clicking Open, inserts the lines of the Memo2 on the FDQuery2 and executes […]

Read More

Learn How To Build Responsive Apps Faster Using Delphi Parallel Programming Library

Building Responsive Apps becomes the most essential need for all Modern Desktop, Mobile and Web applications in all platforms to meet the customer needs. Do you want to wow your customers with greater experience for your Delphi/C++ Builder Applications ? Don’t know how to create responsive apps with Parallel Programming Library ? Don’t Worry! This post will guide you to learn about PPL. Task: A Task is like a parallel procedure. A Task runs parallel to the main thread. Tasks do no start right away, they are held in a queue and it is managed by a Master thread which allocates thread from a thread pool. It works like Master-Worker pattern with a Thread pool. Thread Pool has a number of threads. Based on CPU the threads are avialable and start when CPU time is available.Tasks run best without serializing dependencies. Check the tutorial for Task here Future: Future is like a parallel function. A future is actually a task with return result you wait for it (unless the Future gets completed) . The future method returns an instance of IFuture into the variable defined of type T. Check the tutorial for Future here. Tasks Chaining: Task can be chained together, e.g) Tasks can wait for results from other tasks. This uses TTask.Wait like how TFuture does. WaitForAll task in a list, or WaitForAnyone to complete. Parallel For : A Parallel.For Splits a for loop into pieces that run in parallel. It runs through data in parallel( data parallelism) and waits for completion. Use task if you don’t want to wait in thread. Parallel.For uses Task. Tutorial for Paralle.For here Create Responsive Apps : A Responsive Application never blocks the user interface while processing the data in background and it never waits. Immediate feedback and responsive gives user the great experience. Perceived speed is not equals to actual speed get data and run operations in parallel. Check this Video for the Delphi Parallel Programming Library to create responsive Apps: Get to know about the PPL which Delphi/C++ Builder offers. Want to know more about Task Monitoring, Locking, Pools, Patterns and more? See below video.

Read More

Learn How To Create A Custom List View Adapter With A Python Server In This Sample For Delphi

Location You can find the CustomAdapter sample project at: Start | Programs | Embarcadero RAD Studio Sydney | Samples and navigate to: Object PascalMulti-Device SamplesUser InterfaceListViewCustomAdapter Subversion Repository: You can find Delphi code samples in GitHub Repositories. Search by name into the samples repositories according to your RAD Studio version. Description The CustomAdapter sample shows how to create a custom list view adapter. This specific implementation of a custom adapter obtains image files from a remote server. How to Run the Sample Run the server: Install Python 2 to run the server script. On the project folder, open server.py using a text editor, and update the values of the HOST and PORT variables. Notes: The default values should let you test this sample application on your development PC. To run this sample application on a mobile device, you must update HOST so that it contains the IP address where your mobile devices can reach your development PC. If the default post is busy in your development PC, you must change the value of PORT. Run server.py. Run the sample application: Open the sample application project file. Open the main form of the sample application in the Code Editor and update the value of the Host constant, so that the host and port match those that you configured on the server script. Run the sample application. How It Works After you start this sample application, it displays the following form: Click the Load Pictured button to load 30 list view items from the custom list view adapter. Please follow the link below for more information to the original post: http://docwiki.embarcadero.com/CodeExamples/Sydney/en/FMX.ListViewCustomAdapter

Read More

Quickly Build A Web Front End Using Delphi/C++ Builder With No Front End Web Technologies Knowledge

Surprised with the Title? Yes without knowledge of HTML, CSS, JavaScriptyou can build from Delphi/C++Builder your Web Front end using some of the Client/Server(FullStack) or Client-Focused third party web frameworks. Curious to know how these frameworks do this? This post will help you to understand. What does a web front end framework does exactly: Visual Layout Designed in IDE to render in the browser with HTML, JavaScript & CSS. Using Delphi or other visual designers to create a visual layout. No need to know HTML, CSS, or javascript, may allow customization through HTML, CSS, and JavaScript. No special client plugins required. Some create both server and client-side functionality. Some use pascal to Javascript Transpilers. Transpilers : Transcompiler(translating compiler) or source to source compiler Converts or Translates one programming language to another one. Usually, only a sunset or special dialect of the source language is supported. Platform-specific libraries not supported. Frequently used to convert high level, type-safe, languages into javascript. Examples: Typescript or CoffeeScript transpilers. Some of the Pascal to JavaScript Compilers listed Below : Commercial: OpenSource: C++ to Javascript ; Based on LLVM , Open Source, Compiles C++ to JavaScript. Visual Design Front End Frameworks : AtoZed Software’s IntraWeb: Runs into IDE creating both front end and backed end, Modeled on VCL, Visual Client Designer. The client built from the JS and HTML library. Delphi UI event handlers run on servers, extensible via typescript. Supported by Third Party like TMS Software. Thinfinity Virtual UI By CybeleSoft: Transforms you desktop application into a web application. Includes Javascript Remote Object (jsRO) framework. Full HTML 5 cross-browser client. Server redirects GDI/GDI+ calls to Javascript client. FMSoft UniGui: Installs into Delphi IDE, VCL like design and use. Provides data-aware controls, supports desktop and mobile. Allows optional javascript for client-side events and VCL like server event handlers. SMS (Emphasis on Node.js and cloud-based development) and Elevate Web Builder ( Emphasis on data-driven development) uses Delphi like IDE to design the UI and an Object Pascal to JavaScript transpiler to Create HTML, CSS, Javascript. Watch the video for Overview of web frameworks and some of the front end framework Demonstration. To know more about the list of available frameworks for Delphi have a look on this post.

Read More

High-Performance Remote Cloud Logger For Cross-Platform Delphi/C++Builder Application

Developing Cross-Platform Multi-device Application is made easy with Delphi/C++ Builder. It’s a challenging task to diagnose run-time issues with our application running on various platforms. That too to examine the run time state of our application running on iOS and Android devices are very difficult using the debugger or mobile platform-specific logging. Not to worry. GrijjyCloudLogger solves these challenges and provides remote logging features for Windows, iOS,macOS, Android. GrijjyCloudLogger – Allows you to send log messages over the Intranet or Internet from Windows, Linux, iOS, Android, and macOS devices to a viewer running on Windows. Provides a unified, run-time debug related capabilities like memory and object tracking from these respective platforms. Features: Custom live watches, remote live views of objects, tracking live memory usage, object allocations, growth leaks, and more. Built upon our ZeroMQ Majordomo implementation that allows you to create powerful, lightweight, distributed applications that can route messages over any network, including the Internet.It is extremely fast over the network and can handle numerous connected developers simultaneously. It also uses our Google Protocol Buffers implementation that allows us to encapsulate extensible and arbitrary data and transport the data using efficient payloads. How to use GrijjyCloudLogger : Go to Tools menu in Your IDE-> Getit Package Manager and Type Grijjy and install, it will install all Modules and samples. After installation, Two Icons in Desktop, GrijjyLogBroker, GrijjyLogViewer – includes examples for the console, fire monkey. GrijjyLogBroker: Routes log messages between senders and viewers. By default, the Broker is configured to listen on tcp://localhost:7337. When you use Grijjy.CloudLogging it in your project you need to call the GrijjyLog.Connect() method and provide the address of the Broker. GrijjyLogViewer: The GrijjyLogViewer displays messages that are sent from your app. The Service name in the Connection Settings of the GrijjyLogViewer should match the same Service name you provided to the Grijjy.CloudLogger when calling the Connect() method. Using this technique, all developers in your organization can share the same GrijjyLogBroker. 3. Navigate to the ExampleLogClient.FMX under GrijjyLogViewer samples folder and run the application. Mention the Broker URL and Service Name and send different data that can be viewed in your GrijjyLogViewer. Check the video for GrijjyCloudLogger demonstration here.

Read More

Learn About Powerful WebSockets Solutions For Delphi

The WebSocket is a communication protocol, that makes it possible to open a two-way interactive communication session between the user’s browser and a server. With this, you can send messages to a server and receive event-driven responses without having to poll the server for a reply. Applications that require Real-time data streaming, Synchronization uses WebSocket primarily. Most browsers support the protocol, including Google Chrome, Microsoft Edge, Internet Explorer, Firefox, Safari, and Opera. The WebSocket protocol specification defines ws (WebSocket) and wss (WebSocket Secure) as two new uniform resource identifier (URI) schemes that are used for unencrypted and encrypted connections, respectively. Web Socket Server: A WebSocket server is nothing more than an application listening on any port of a TCP server that follows a specific protocol. The task of creating a custom server tends to scare people; however, it can be straightforward to implement a simple WebSocket server on your platform of choice. In Delphi, we can create our own server directly inheriting from Indy TIdCustomTCPServer. WebSocket servers are often separate and specialized servers (for load-balancing or other practical reasons), so you will often use a reverse proxy (such as a regular HTTP server) to detect WebSocket handshakes, pre-process them, and send those clients to a real WebSocket server. Web Socket Handshake: The server must listen for incoming socket connections using a standard TCP socket. Depending on your platform, this may be handled for you automatically. For example, let’s assume that your server is listening on example.com, port 8000, and your socket server responds to GET requests at example.com/chat. Client HandShake: Even though you’re building a server, a client still has to start the WebSocket handshake process by contacting the server and requesting a WebSocket connection. So, you must know how to interpret the client’s request. The client will send a pretty standard HTTP request with headers that looks like this (the HTTP version must be 1.1 or greater, and the method must be GET): GET /chat HTTP/1.1 Host: example.com:8000 Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== Sec-WebSocket-Version: 13 GET /chat HTTP/1.1 Host: example.com:8000 strong>Upgrade: websocket/strong> strong>Connection: Upgrade/strong> Sec–WebSocket–Key: dGhlIHNhbXBsZSBub25jZQ== Sec–WebSocket–Version: 13 When the server receives the handshake request, it should send back a special response that indicates that the protocol will be changing from HTTP to WebSocket. That header looks something like the following (remember each header line ends with rn and put an extra rn after the last one to indicate the end of the header): HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= strong>HTTP/1.1 101 Switching Protocols/strong> Upgrade: websocket Connection: Upgrade strong>Sec–WebSocket–Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= /strong> Exchanging Data formats : Message is Exchanged in certain formats Between client and server called “Frames”. For more information check here. Existing Solutions Available : Check the video for creating web sockets server and client implementation in Delphi below. WebSocket And Delphi

Read More

Quickly Build C++ Builder Application And Connect To Microsoft Excel Using ADO

Connecting and Read/Write to Microsoft Excel becomes a common need among many Applications. How to do with ADO connection in your C++ Builder Application? This Post guide will you to do that and its very simple steps. Assume you need to create a application, Read data from excel and populate into a Grid, and need to write data to the excel. To do this four components required, TADOConnection: TADOConnection encapsulates the ADO connection object. Use TADOConnection for connecting to ADO data stores(e.g Excel). The connection provided by a single TADOConnection component can be shared by multiple ADO command and dataset components through their Connection properties. TADOConnection allows you to control the attributes and conditions of a connection to a data store. TADOQuery: To access one or more tables( In Excel, it is sheet) in a data store using SQL statements. Retrieve data from tables in an ADO data store using SELECT statements. Perform actions on tables and other metadata objects in an ADO data store with statements like INSERT, DELETE, UPDATE, ALTER TABLE, and CREATE TABLE. Execute stored procedures.   TDataSource: To provide a conduit between a dataset and data-aware controls on a form that enable display, navigation, and editing of the data underlying the dataset.  TDBGrid: Displays and manipulates records from a dataset in a tabular grid. Applications can use the data grid to insert, delete, or edit data in the database, or simply to display it. Steps to connect to Excel using ADO Connection: Create a new Windows VCL C++ Application. Add these components TADOconnection, TADOQuery, TDataSource, TDBGrid, TCombox, and TButton. Set the ADOquery and DBGrid Datasource property with TDatasource instance. Assign the TADOConnection.Connectionstring with “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:YourExcel.xls;Extended Properties=”Excel 8.0”; Populate the tables(sheet list) into the combobox from TADOconnection.GetTableNames(StringList). On Button click set TADOQuery SQL string with “select * from ” and open the TADOQuery. Check the video for demonstration.

Read More

Learn How Easy It Is To Connect To Microsoft SQL Server Using FireDAC In RAD Studio

Connecting to Multiple Enterprise Databases is no more a time consuming task in making connections and login to databases. FireDAC is a Universal Data Access library for developing applications for multiple devices, connected to enterprise databases. With its powerful universal architecture, FireDAC enables native high-speed direct access from Delphi and C++Builder to InterBase, SQLite, MySQL, SQL Server, Oracle, PostgreSQL, DB2, SQL Anywhere, Advantage DB, Firebird, Access, Informix, DataSnap, and more, including the NoSQL Database MongoDB. How To Connect With Microsoft SQL Server using FireDAC. Prerequisites : Ensure Native Microsoft SQL server latest driver is installed and a Microsoft SQL Server installed machine (local or Remote) to connect database. Open RAD Studio 10.4.1 -> Navigate to Data Explorer -> Expand FireDAC -> Select Microsoft SQL Server. Right Click Add New Connection. Enter the name of the Connection e.g) NorthWind. FireDac Conenction editor is opened with DriverID ‘MSSQL’ Provide the Server, Database, Username, Password to connect. Click the Test Button to check the connection. FireDAC login window with details will be shown. Click Ok. Connection Successful message will be popped up. Lot of other options available for your connection establisment. Check out the documentation here. Once Successful connection is made, Expand the database which is connected e.g Northwind, you can Expand Tables, Views. Create a new Windows VCL Application. Drag and Drop the Table e.g Employee. Select the Table and in Object Inspector set the property Active to true. Right Click Bind Visually, Which opens the LiveBindings Designer with the TableName. Select * in the Table Row. RightClick Link to new Control… Select TStringGrid. That’s all, Table data is populated to String Grid in the Form. These 10 Simple steps is enough to make your connection with Microsoft SQL Server. Check out the Demonstration here. Universal FireDAC Connectivity Architecture: FireDAC Architecture. FireDAC Features : Data Access Engine : Lightweight, effective and flexible engine can be used directly in applications and serves as a powerful foundation to the datasets API.  Unified API : FireDAC provides a range of features that help abstract the differences between database systems, making it easy to write code that does not have to be concerned about different DBMS dialects or other subtle differences between DBMSs. High- Performance Data Access : Database access is optimized using many different techniques often found only in database-specific components, which let you get faster data access out of the box. To get started with FireDAC and benefits it offers for developers Check here.

Read More

Learn How to Build High-Performance Real-Time Apps With Delphi And SignalR

In this CodeRage session, we’ll create a simple real-time multi-platform chat application in RAD Studio using the Devart SecureBridge component called TScHubConnection, which implements the functionality of a SignalR client. What can you do with SignalR? While chat is often used as an example, you can do a whole lot more. Any time a user refreshes a web page to see new data, or the page implements Ajax long polling to retrieve new data, it’s a nominee for using SignalR. SignalR also enables completely new types of applications that require high-frequency updates from the server, such as real-time gaming. SignalR library has been implemented in many languages already and the solution by Devart is a great option.  Be sure to watch the CodeRage session where you can learn how you can implement such functionalities in your Delphi applications.  Here you can learn more about the SecureBridge component at Devart.

Read More

Learn How To Take Your Cross-Platform Development To The Next Level With Delphi FireUI

With the all-new FireUI Multi-Device Designer, design user interfaces across multiple devices using a master form to share all user interface code, then optimize derived views for each target platform and device. The existing native Desktop styles have been extended to cover the same UI elements as mobile styles, providing a 1:1 match with universal styling support across all platforms, giving the native look and feel on each supported platform. FireUI Multi-Device Designer provides a set of predefined views, including Windows Desktop, Surface Pro Tablet, Mac Desktop, iPhone, iPad, Android Tablets, and Smart Phones, and wearables like Smart Watches. FireUI: Revolutionary Multi-Device Development Devices are everywhere and users’ expectations are higher than they have ever been. Customers expect to be able to use an application on their smartphone while on the go and then switch to their tablet or Desktop computer while in their office or at home. Optimizing user interfaces for each of these device form factors can be challenging and costly, efficiently building multiple separate form views for each device. Multi-Device development is radically simplified with the FireUI design paradigm, tools, and components, delivering more productivity than ever before.

Read More