C++ Builder

The First Steps Of How To Develop Games In C++

Hello everyone. The C++ programming language is the most used programming language in game development. The gaming industry keeps growing, this can be seen by the number of new games, game tools, new 3D features, and many new gaming technologies that come in every week, and by the enormous incomes from game marketing. If you want to start game development for free or if you are just interested in learning C++ then download C++ Builder 11 CE and start to take your first steps into the amazing world of C++ game development. According to global game marketing analysis, it will keep growing up in the next 5 years analysis. For example, according to this source; “The global gaming market size reached US$ 202.7 Billion in 2022. Looking forward, IMARC Group expects the market to reach US$ 343.6 Billion by 2028, exhibiting a growth rate (CAGR) of 9.08% during 2023-2028. The growing utilization of smart devices, wide availability of free-to-play games online, and increasing popularity of e-sports and multiplayer video game competitions represent some of the key factors driving the market“ Developing a good and effective game might be the dream path to fame and fortune, but it’s also a path which typically requires a lot of effort and not a small amount of luck too. You don’t need to spend billion dollars to develop games. You can start with simple but effective games. C++ is one of the most powerful programming languages that we can use to create games in 2D or 3D. You just need an idea, a C++ editor, and passion to develop it. C++ Builder and RAD Studio have built in features to help you so you can easily deploy your game in app stores or on your web page. Table of Contents How can I start to develop a game in C++ for free? What is new in C++ Builder CE? What are the basics to develop games with C++ Builder CE? Learn to develop games with C++ Builder CE Get in touch and tell us what you’d like to see on the blogs What might be next for C++ Builder? How can I start to develop a game in C++ for free? If you don’t know anything about C++ or the C++ Builder IDE, don’t worry, we have a lot of examples on the LearnCPlusPlus.org website and they’re all completely free. Just visit this site and copy and paste any examples there into a new Console, VCL, or FMX project, depending on the post example. We keep adding more C and C++ posts with sample code. In today’s round-up of recent posts on LearnCPlusPlus.org, we have new C and C++ posts with very simple examples that can be used with the following: The free version of C++ Builder 11 CE Community Edition. or a full paid version of C++ Builder and RAD Studio. or free BCC32C C++ Compiler and BCC32X C++ Compiler. or the free Embarcadero Dev-C++ IDE with TDM GCC Compiler What is new in C++ Builder CE? C++ Builder 11 CE, the free Edition of C++ Builder, has been recently released. Embarcadero has made available a Community Edition license for the most recent 11.3 release of Delphi and C++Builder. This is a free edition of either Delphi or C++Builder for students, hobbyists, and startups (as the license is revenue-limited). There is also […]

Read More

5 New Posts With Free C++ Builder CE, Dev-C++, BCC, GCC Examples

Hello developers, if you just starting out on your C++ journey and want to jump to a modern IDE and C++ compiler, there is a free version of C++ Builder, C++ Builder 11 CE Community Edition released on April 2023. If you are a start-up developer, student, hobbyist, or just interested in learning to code then the C++ Builder Community Edition may well be just the thing for you. Read the FAQ notes on the CE license and then simply fill out the form to download C++ Builder 11 CE. Today we have 5 more C++ posts, some of C++ examples in these posts can be used with C++ Builder or the C++ Builder 11 CE Community Edition, and others can be used with Dev-C++, BCC C++ Compilers, and some other compilers such as the GCC compiler. Table of Contents Where can I learn to program with free C++ examples? What is new in C++ Builder CE? What are the important features of C++ that can be used with C++ Builder CE? Learn C++ Builder CE with C++ examples Get in touch and tell us what you’d like to see on the blogs What might be next for C++ Builder? Where can I learn to program with free C++ examples? If you don’t know anything about C++ or the C++ Builder IDE, don’t worry, we have a lot of great examples on LearnCPlusPlus.org website and they’re all completely free. Just visit this site and copy and paste any examples there into a new Console, VCL, or FMX project, depending on the post example. We keep adding more C and C++ posts with sample code. In today’s round-up of recent posts on LearnCPlusPlus.org, we have new C and C++ posts with very simple examples that can be used with: The free version of C++ Builder 11 CE Community Edition or a professional C++ Builder  or free BCC32C C++ Compiler and BCC32X C++ Compiler or the free Dev-C++ What is new in C++ Builder CE? C++ Builder 11 CE which is the free Edition of C++ Builder has been recently released. Embarcadero has made available a Community Edition license for the most recent 11.3 release of Delphi and C++Builder. This is a free edition of either Delphi or C++Builder for students, hobbyists, and startups (as the license is revenue-limited). What are the important features of C++ that can be used with C++ Builder CE? C++ is one of the most powerful programming languages that we use for all sorts of purposes, from regular applications, games, business, industrial infrastructure, robotics, and in the control of IoT devices. The most well-known controllers for those areas where human and computer interaction are important and stretches beyond simple keyboard input are joysticks or gamepads. One of the simplest examples to use them on Windows is using the venerable XInput library which has been around for quite a long time but can still be easily used with the latest C++ Compiler. In the first post, we explain how you can use a gamepad or joystick controller in C++ with the Xinput library. https://learncplusplus.org/how-to-use-a-game-pad-or-joystick-controller-in-c-on-windows/ C++ Builder is the easiest and fastest C++ IDE for building professional applications with powerful GUI components like Memo, Edit, ListBox, StringGrid and many more. Each component can be skinned with Styles to change their visual appearance. Styles are very powerful and because of this it can […]

Read More

Let Stack Overflow Know You Use RAD Studio With Delphi

Hello fellow developers. The hugely important Stack Overflow site is currently running their annual survey of developer tools. Delphi is listed among the choices. It would be really helpful if you could visit the survey and let Stack Overflow know that you’re a RAD Studio with Delphi user. Whether you use one of the paid editions or the recently announced version 11 Community Edition it all counts. Delphi is very good at working away silently and trouble-free in the background, powering all sorts of parts of commerce, apps, and vital infrastructure. The fact that Delphi apps are immensely stable and don’t keel over just because something on the computer was changed or upgraded is a huge benefit – but it’s also a curse. It can lead to the language being ‘silently successful’. To paraphrase Oscar Wilde, “there is only one thing worse than being talked about, and that is not being talked about“. The Stack Overflow survey also has a spot to indicate that you use RAD Studio, so C++ Builder also counts too. So, please, go to the following link and let everyone know that you’re a Delphi user. It’s anonymous and only takes a few minutes. The figures are aggregated so nobody will actually know – but every single vote counts. The survey closes on May 19th so the sooner you can take the survey, the better. Here’s the survey: https://meta.stackoverflow.com/questions/424565/take-the-2023-developer-survey Marco has written a blog about the survey too. I am also very grateful to Darian Miller, one of our excellent MVPs who managed to electronically poke me as soon as I took over from Jim McKeeth and reminded me about the survey. Darian has his own take on the survey here: https://www.ideasawakened.com/post/2023-stack-overflow-developer-survey-includes-delphi-place-your-vote-today If you can find the time to complete the survey you’ll be helping both your fellow Delphi developers and those people who are considering development for the first time. Free Delphi Community Edition   Free C++Builder Community Edition

Read More

5 Modern C++ Posts That Can Be Used With C++ Builder 11 CE

Hello C++ developers, C++ students, and C++ educators. We recently had another milestone for the C++ programming language with a free version of C++ Builder, C++ Builder 11 CE Community Edition released in April 2023. If you are a start-up developer, student, hobbyist or just interested in learning to code then C++ Builder Community Edition may well be just the thing for you. Read the FAQ notes on the CE license and then simply fill out the form and download C++ Builder 11 CE. Table of Contents Where can I learn to program in C++ for free? What is new in C++ Builder CE? What are the important features of C++ that can be used with C++ Builder CE? Learn C++ Builder CE with C++ examples Get in touch and tell us what you’d like to see on the blogs What might be next for C++ Builder? Where can I learn to program in C++ for free? If you don’t know anything about C++ or the C++ Builder IDE, don’t worry, we have a lot of examples on the LearnCPlusPlus.org website and they’re all completely free. Just visit this site and copy and paste any examples there into a new Console, VCL, or FMX project, depending on the post example. We keep adding more C and C++ posts with sample code. In today’s round-up of recent posts on LearnCPlusPlus.org, we have new C and C++ posts with very simple examples that can be used with the following: The free version of C++ Builder 11 CE Community Edition. or a full paid version of C++ Builder and RAD Studio. or free BCC32C C++ Compiler and BCC32X C++ Compiler. or the free Dev-C++. What is new in C++ Builder CE? C++ Builder 11 CE, the free Edition of C++ Builder, has been recently released. Embarcadero has made available a Community Edition license for the most recent 11.3 release of Delphi and C++Builder. This is a free edition of either Delphi or C++Builder for students, hobbyists, and startups (as the license is revenue-limited). There is also a new Delphi CE version 11 edition. The C++ CE version and Delphi CE version cannot exist on the same machine. The full commercial versions of RAD Studio with Delphi and C++ Builder can co-exist though, and, in fact, RAD Studio can choose between the “C++ personality” and “Delphi personality” so you can use it for both languages as your needs dictate. What are the important features of C++ that can be used with C++ Builder CE? C++ is a very capable, versatile, and powerful programming language that has a very strong compiler supported by a big community on a range of different platforms. The C++ language definitions, syntax, and functionality are organized into different standards. Those standards are usually named after the year the standard was adopted such as 1998 for C++98, 2011 for C++11, 2014 for C++14, and 2017 for C++17. One of the great features of a C++ compiler is you can choose which standards you want your code to be compiled against, before the compilation of your source code. This allows the compiler to check that your code complies with that standard. In the first post, we explain what the standards are, how you can view them, how you can check the compatibility of your C++ source code against […]

Read More

Embarcadero Welcomes Ian Barker to Developer Advocate Role

If you have watched any of Embarcadero’s online content, attended a RAD Studio webinar, or been to one of the in-person events you will most likely know the wonderful Jim McKeeth. Jim has been the Chief Developer Advocate and Engineer for Embarcadero since July 13th, 2013, just short of ten years. Today, however, the big news is that Jim is leaving Embarcadero and moving on to a new role as a developer advocate at EOS Network Foundation. Of course, we’re devastated that Jim’s particular brand of jovial code geekery will no longer be at the helm of the Developer Relations program, but we’re also thrilled for him to be moving on to new horizons and will get to stretch that burgeoning tech brain of his with the delights of such things as block-chain. Along with that news comes, of course, an announcement that Ian Barker (that’s me) will be taking over as Embarcadero Developer Advocate. I’ll be dealing with most of the things Jim did, those that are public, along with those which he did so capably behind the scenes too, of which there are many. Eli Mapstead will be expanding his role too and taking over some of the Python projects that Jim oversaw and championed. Yes, Jim can legitimately make the claim “it took two people to replace me“. Jim will become an Embarcadero MVP – once I’ve reviewed his application and decided if he’s good enough. ???? I’m going to do a more comprehensive retrospective blog post of some of the many great things Jim has been responsible for as well as highlight a few of his crazy professor moments, we have a thick stack of them – he’s a developer’s developer and irrepressible gadget freak – but, for now, we’re going to let the video do the talking. The audio echoed a little from time to time – but then it wouldn’t be the same if technology didn’t try to trip Jim or I up during recording, would it? From all of us in the Embarcadero and Idera family – thank you Jim. You’re a hard act to follow. Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder. Design. Code. Compile. Deploy. Start Free Trial   Upgrade Today    Free Delphi Community Edition   Free C++Builder Community Edition

Read More

How To Change The Background Color Of A Memo In An FMX C++ App

C++ Builder is the easiest and fastest C++ IDE for building professional FMX C++ Apps with powerful GUI components like Memo, Edit, ListBox, StringGrid, and many more. Each component can be skinned with Styles to change their visual appearance. Styles are very powerful and because of this it can sometimes take a little to get used to how they work. In this post, we explain how to change the background color of a Memo (TMemo), one of the most frequently asked questions about using styles. These methods below can be applied to other components too. How to change the background color of a Memo in C++ Builder by using Styles? Styles are sets of graphical details that define the look and feel of an application. They are one of the most beautiful and useful UI features of RAD Studio that can really add some extra professionalism to your apps. RAD Studio’s C++ Builder version comes with the award-winning VCL framework for high-performance native Windows apps (not wrapped in some kind of runtime interpretation layer) and the powerful FireMonkey (FMX) framework for cross-platform UIs. Both VCL and FMX C++ Apps support Styles. There are many styles in C++ Builder, and RAD Studio. More details about Styles can be found here. You can also find Premium Styles here. If you want to learn how you can modernize your components with styles this post has some great details; What are the steps to change the background color of a Memo in C++ Builder by using Styles? 1. Right-click on the Memo and select ‘Edit Custom Style…’ 2. Expand Memo1Style: you’ll see the background node. Click on background to select it. Then add a TRectangle via the Palette. The IDE should expand the background node and show a new Rectangle1Style tied to the TRectangle, 3. Via the Object Inspector change the Color of TRectangle as below 4. Click on the Apply Style button in the ‘Style Designer’, Save All. 5. Compile and run your application If you still have problems setting the color, this DocWiki article can help you: https://blogs.embarcadero.com/edit-custom-style-to-change-the-background-color-of-a-fmx-tedit/ How to change the background color of a Memo in C++ Builder code? If you want to change the background color of a Memo component (TMemo) in C++ Builder, first you should set the StyleLookup to “Memostyle” as shown below: Memo1->StyleLookup = “Memostyle”; If you look at the Custom Style of Memo, There is a “background” property, so we should find this resource by using FindStyleResource() method of Memo as given in the example below: Memo1->StyleLookup = “Memostyle”; auto fmxobj = Edit1->FindStyleResource(“background”, false); If this resource object we can create a rectangle (TRectangle) as a background: std::unique_ptr<TRectangle> rect(new TRectangle(fmxobj)); Here we used unique_ptr which more modern to create this rectangle. Now we can set properties of our Rectangle, including its color. rect->Align = TAlignLayout::Client; rect->Fill->Color = color; rect->Stroke->Color = color; // = claNull; rect->HitTest = false; rect->SendToBack(); Now, at last we need to add this object by using the .get() method of unique_ptr. And the final trick here is you must release this unique_ptr by using .release() otherwise it doesn’t have any effect. fmxobj->AddObject(rect.get()); rect.release(); Is there a full example of how to change the background color of a Memo in C++ Builder code? Here is a full C++ Builder FMX FMX C++ Apps example that changes the color of 3 TMemo components that has Memo1, Memo2, Memo3 names. To do this we create a ChangeMemoColor() function that uses the […]

Read More

Dealing with Sharing C++

If you don’t use Sharing C++, no data races can happen. Not sharing means that your thread works on local variables. This can be achieved by copying the value, using thread-specific storage, or transferring the result of a thread to its associated future via a protected data channel. The patterns in this section are quite obvious, but I will present them with a short explanation for completeness. Let me start with Copied Value. Copied Value Sharing C++ If a thread gets its arguments by copy and not by reference, there is no need to synchronize access to any data. No data races and no lifetime issues are possible. Data Races with References The following program creates three threads. One thread gets its argument by copy, the other by reference, and the last by constant reference. // copiedValueDataRace.cpp #include #include #include #include using namespace std::chrono_literals; void byCopy(bool b){ std::this_thread::sleep_for(1ms); // (1) std::cout << “byCopy: ” << b << ‘n’; } void byReference(bool& b){ std::this_thread::sleep_for(1ms); // (2) std::cout << “byReference: ” << b << ‘n’; } void byConstReference(const bool& b){ std::this_thread::sleep_for(1ms); // (3) std::cout << “byConstReference: ” << b << ‘n’; } int main(){ std::cout << std::boolalpha << ‘n’; bool shared{false}; std::thread t1(byCopy, shared); std::thread t2(byReference, std::ref(shared)); std::thread t3(byConstReference, std::cref(shared)); shared = true; t1.join(); t2.join(); t3.join(); std::cout << ‘n’; } Each thread sleeps for one millisecond (lines 1, 2, and 3) before displaying the boolean value. Only the thread t1 has a local copy of the boolean and has, therefore, no data race. The program’s output shows that the boolean values of threads t2 and t3 are modified without synchronization. You may think that the thread t3 in the previous example copiedValueDataRace.cpp can just be replaced with std::thread t3(byConstReference, shared). The program compiles and runs, but what seems like a reference is a copy. The reason is that the type traits function std::decay is applied to each thread argument. std::decay performs lvalue-to-rvalue, array-to-pointer, and function-to-pointer implicit conversions to its type T. In particular, it invokes, in this case, the type traits function std::remove_reference on the type T. The following program perConstReference.cpp uses a non-copyable type NonCopyableClass. // perConstReference.cpp #include class NonCopyableClass{ public: // the compiler generated default constructor NonCopyableClass() = default; // disallow copying NonCopyableClass& operator = (const NonCopyableClass&) = delete; NonCopyableClass (const NonCopyableClass&) = delete; }; void perConstReference(const NonCopyableClass& nonCopy){} int main(){ NonCopyableClass nonCopy; // (1) perConstReference(nonCopy); // (2) std::thread t(perConstReference, nonCopy); // (3) t.join(); } The object nonCopy (line 1) is not copyable. This is fine if I invoke the function perConstReference with the argument nonCopy (line 2) because the function accepts its argument per constant reference. Using the same function in the thread t (line 3) causes GCC to generate a verbose compiler error with more than 300 lines: The error message’s essential part is in the middle of the screenshot in red rounded rectangle: “error: use of deleted function”. The copy-constructor of the class NonCopyableClass is not available. When you borrow something, you have to ensure that the underlying value is still available when you use it. Lifetime Issues with References If a thread uses its argument by reference and you detach the thread, you have to be extremely careful. The small program copiedValueLifetimeIssues.cpp has undefined behavior. // copiedValueLifetimeIssues.cpp #include #include #include void executeTwoThreads(){ // (1) const std::string […]

Read More

Reactor

Reactor Also known as Problem  Solution Structure Dynamic Behavior Example Pros and Cons Pros Cons What’s Next? Event-driven applications, such as GUIs or servers, often apply the architecture pattern Reactor. A Reactor can accept multiple requests simultaneously and distribute them to different handlers. The Reactor Pattern is an event-driven framework to concurrently demultiplex and dispatch service requests to various service providers. The requests are processed synchronously. Reactor Also known as Dispatcher Notifier Problem A server should answer several client requests simultaneously be performant, stable, and scalable be extendable to support new or improved services The application should be hidden from multi-threading and synchronization challenges  Solution Each supported service is encapsulated in a handler The handlers are registered within the Reactor The Reactor uses an event demultiplexer to wait synchronously on all incoming events When the Reactor is notified, it dispatches the service request to the specific handler Structure Handles The handles identify different event sources, such as network connections, open files, or GUI events. The event source generates events such as connect, read, or write queued on the associated handle. Synchronous event demultiplexer The synchronous event demultiplexer waits for one or more indication events and blocks until the associated handle can process the event. The system calls select, poll, epoll, kqueue, or WaitForMultipleObjects enable it to wait for indication events. Event handler The event handler defines the interface for processing the indication events. The event handler defines the supported services of the application. Concrete event handler The concrete event handler implements the interface of the application defined by the event handler. Reactor The Reactor supports an interface to register and deregister the concrete event handler using file descriptors. The Reactor uses a synchronous event demultiplexer to wait for indication events. An indication event can be a reading event, a writing event, or an error event. The Reactor maps the events to their concrete event handler. The Reactor manages the lifetime of the event loop. The Reactor (not the application) waits for the indication events to demultiplex and dispatch the event. The concrete event handlers are registered within the Reactor. The Reactor inverts the flow of control. This inversion of control is often called Hollywood principle. The dynamic behavior of a Reactor is pretty interesting. Dynamic Behavior The following points illustrate the control flow between the Reactor and the event handler. The application registers an event handler for specific events in the Reactor. Each event handler provides its specific handler to the Reactor. The application starts the event loop. The event loop waits for indication events. The event demultiplexer returns to the Reactor when an event source becomes ready. The Reactor dispatches the handles to the corresponding event handler. The event handler processes the event. Let’s study the Reactor in action. This example uses the POCO framework. “The POCO C++ Libraries are powerful cross-platform C++ libraries for building network- and internet-based applications that run on desktop, server, mobile, IoT, and embedded systems.” // reactor.cpp #include #include #include “Poco/Net/SocketReactor.h” #include “Poco/Net/SocketAcceptor.h” #include “Poco/Net/SocketNotification.h” #include “Poco/Net/StreamSocket.h” #include “Poco/Net/ServerSocket.h” #include “Poco/Observer.h” #include “Poco/Thread.h” #include “Poco/Util/ServerApplication.h” using Poco::Observer; using Poco::Thread; using Poco::Net::ReadableNotification; using Poco::Net::ServerSocket; using Poco::Net::ShutdownNotification; using Poco::Net::SocketAcceptor; using Poco::Net::SocketReactor; using Poco::Net::StreamSocket; using Poco::Util::Application; class EchoHandler { public: EchoHandler(const StreamSocket& s, SocketReactor& r): socket(s), reactor(r) { // (11) reactor.addEventHandler(socket, Observer<EchoHandler, ReadableNotification>(*this, &EchoHandler::socketReadable)); } void socketReadable(ReadableNotification*) […]

Read More

How To Add A Sepia Image Effect In Your Apps With No Code in C++ Builder IDE

What is a sepia effect in a C++ app? Is there an easy way to add sepia effects to components? How can I add a sepia effect to alpha images in my applications? How can I use the TSepiaEffect component in C++ Builder? What are the visual tips to add a sepia effect in the development of C++ applications? Let’s answer these questions. C++ Builder IDE is the easiest and fastest C and C++ IDE for building simple or professional applications on the Windows, MacOS, iOS & Android operating systems. One of the greatest features of VCL and FMX UI frameworks are the effects on UI elements. There are many UI effects that can be used on most of the visual elements supported officially by the Embarcadero. There are many good effects that we can use: Sepia Effect, Reflection Effects, Shadow Effects, Emboss Effects, Glow Effects, etc. Let’s see how we can apply a sepia effect to our images in C++ Builder IDE. What is a Sepia Effect? The sepia effect is a tonal editing technique that adds a warmer tone to a given image, so it appears to have a vintage or archival quality. Generally, Sepia effects have good results when used on photos. If you want to add some warmer style to your composition, the sepia effect works exceptionally well with black and white images. With C++ Builder IDE, you can add a sepia effect to your color images by using TSepiaEffect. Let’s see how we can use TSepiaEffect. How to use TSepiaEffect in C++ Builder IDE? TSepiaEffect is a class to create sepia effects for visible objects like images, shapes and similar items. TSepiaEffects affect the texture of visual objects. For further information, go to TImageFXEffect and FireMonkey Image Effects. Using these components, you can apply a sepia effect to screen elements and images with NO CODE at all! The intensity of the sepia color applied over the texture can be set through the Amount property. The following table shows the result of the TSepiaEffect effect on a .png picture, placed on a form (using a TImage object). The default value (Amount=0.5) is used to set the sepia amount. Create a new Multi-Device C++ Builder Project, save all project files in a folder Drag a TImage component from Palette onto the Form, Load an Image by using its MultiResBitmap property Copy and paste this TImage (Image1), position the new one (Image2) to the left Now we have two same Images. Let’s add SepiaEffect to the right one. Drag TSepiaEffect from Palette to the new TImage (i.e.Image2). If you do this it will automatically add Sepia Effect on the new Image with the 0.5 amount which is the default. You can modify the Amount (0 to 1.0) of Sepia Effect from the Object Inspector if you want. Lower values add the lighter amount of sepia effect, higher values have much. The maximum is 1.0. 8. Finally, you can run the application by pressing F9 or Run button, Here is the result. What are some additional tips on adding sepia effects to images at design or run time? You don’t need to use the sepia effect if it is not needed, the simple UI is the best!  User images are a good candidate on which to apply the sepia effect, do not use on other components and visual […]

Read More

Powerful Human Interface Devices Library For C++ Builder

Communicating with Human Interface Devices such as Alphanumeric display, Bar Code Reader, Sensors, Volume control on Speakers/Headsets becomes a primary use case for real-world, Cross-platform applications. Do you spend more time in building libraries to communicate with Human Interface Devices for your Delphi/C++ FireMonkey applications? WINSOFT Provides a powerful library to get the job done. It uses the standard Windows HID API. Features: Able to notify on Human Interface Devices arrival and removal. Can retrieve all the HID devices information available in the System. Flexible to getting/set Feature Report for the HID devices. Works with Windows 32/64-bit applications. Versions Supported: /C++ Builder XE2 – C++ Builder 10.4.1 Sydney Platforms: Windows, OS X, Android, and iOS; Steps to Download and use the Native HID Library: Download Native HID for FireMonkey and Unzip the file. Nahttps://winsoft.sk/nathid.htmvigate to the Library folder for different Versions. e.g) Delphi104-Win32. Read the Readme.txt file to know about features and copyright information. Create a Windows VCL Application and use FHid.pas in the uses section. Include the Library folder into Project->Options->Delphi Compiler->Search Path. Compile and check for using the library. NativeHID Download and Use for FireMonkey demo:https://www.youtube.com/embed/qx5A1zm9WkM?feature=oembed Key HID concepts:Report -Reports are the actual data that is exchanged between a device and a software client.  Input Report – Data sent from the Human Interface Devices to the application, typically when the state of a control changes. Output Report – Data sent from the application to the HID device, for example to the LEDs on a keyboard. Feature Report -Data that can be manually read and/or written, and are typically related to configuration information. Report Descriptor – The Report Descriptor describes the format and meaning of the data that the device supports.UsageTables – Contain a list with descriptions of Usages, which describe the intended meaning and use of a particular item described in the Report Descriptor. For example, a Usage is defined for the left button of a mouse.  USB-IF WorkGroup Publishes the Usage Tables. See USB-IF HID Specifications. Learn how to build FireMonkey applications using Native HID library

Read More