Leaderboard
Popular Content
Showing content with the highest reputation on 11/11/23 in all areas
-
All these marketing people trying to generate buzz around a name. How about fixing the bugs and making the product better? Then you can call it anything you like and it will sell.
-
I mentioned that I am working on the Delphi Tools Manager in my post about GExperts supporting import and export for the Tools menu. Today I finished the first version of this tool. It supports all Delphi versions from 5 to 10.3 (it is written in Delphi 10.2). So, what does it do: It shows a list of all entries in the Delphi IDE’s tool menu in a similar manner as the Tools Options dialog. It allows the same actions as that dialog: Add/Delete/Edit an entry and change the order of the entries. It shows the details of each entry when it is selected. It allows exporting and importing entries, using the same DTME file format as GExperts Dragging one or more DTME files on the form will add them to the list Read on in the blog post at https://blog.dummzeuch.de/2019/06/16/delphi-tools-manager-1-0-0-released/
-
fgxnative FGX Native - crossplatform mobile native development
Yaroslav Brovin posted a topic in Delphi Third-Party
Good afternoon, dear Delphi developers! I would like to share with you information about our FGX Native product for Delphi, which can be an excellent working tool for you to create cross-platform mobile applications. P.S. I will be happy to answer any of your questions. What is it? FGX Native is a framework developed from scratch, completely independent of FMX/VCL, allowing you to create native mobile cross-platform applications for Android/iOS and using native components provided by operating systems. Key Features: Smooth animation. All visual components have smooth animation. Native view. The components look familiar to the user of the mobile OS(Android и iOS). Support of Right-To-Left languages. Modern approaches in development. Links: Official site: https://fgx-native.com/en/ Customers applications: link For whom? Currently, the world of mobile development is experiencing rapid development. Many services and desktop applications are duplicated in one form or another on mobile devices, and this is not surprising, because according to statistics, about 59% of people in the world own smartphones. This is a huge market that is constantly growing. Unfortunately, mobile development is quite different from desktop development in terms of building a UI. Therefore, in FGX Native, we focused exclusively on the specifics inherent in mobile operating systems and deliberately abandoned support for desktop systems. Our product can be useful both for Delphi developers who just want to enter the world of mobile development, and for those who have ready-made projects created using FMX and are faced with certain limitations of the FMX framework. At the moment, we already have several completed successful translations of projects from FMX to FGX. We are expanding our cooperation with educational institutions and already supply free licenses for computer classes for teaching mobile development with FGX Native. Features FGX Native is built entirely from scratch using only RTL. The delivery includes a rather impressive number of ready-made components for solving problems of different plans. Form Designer The form designer is the cornerstone for convenient visual and really fast mobile app development. The convenience of the designer and the set of visual components depends on how quickly you will be able to add new functionality, make quick visual edits or just check out an idea. Therefore, we have developed our own unique form designer for FGX Native. It offers a large number of features that will definitely accelerate the development of the interface of your future application and make it visual and enjoyable. FlexBox Alignment System The world of mobile devices is characterized by great variability in screen sizes. It is often necessary to use different placement of elements on screens for different orientations and sizes of screens. The classic Delphi alignment system was created in an era when mobile development did not exist in principle, so it is not particularly suitable for these purposes. In FGX Native, we abandoned the classical system in favor of the modern FlexBox, which has already become the de facto standard in various programming languages and layout. As a result, we can make complex, adaptive markup options directly in the designer and, as a rule, without a single line of code. Below are the options for marking up the login and password entry form. As you can see, in portrait and landscape orientations, the form elements are arranged differently. And all this is done by means of the FGX Native designer without a single line of code! List Lists are one of the key components in mobile development. They replace the usual approach with grids, trees, etc. The elements of the list have truly amazing possibilities for customizing the appearance through the use of different styles, which in turn are configured directly in the designer in a way familiar to everyone. It is worth mentioning that the library is supplied with a set of preset styles according to the Material Design concept (https://material.io/components/lists ) which can be selected with one click. Lists support multi-column display mode, dragging and dropping items, and much more. But the most important advantage is that lists maintain smooth operation with thousands and even hundreds of thousands of elements with complex markup due to their internal architecture. Containers A separate part is container components, which are designed to group components and display them in a special way. Among such components, sliding panels for menus. Sliding pages from the bottom, grouping components with scrolling and much more. Camera and barcode scanner One of the applied areas of mobile application development is warehouse accounting. And here you can not do without a barcode scanner. We have already developed it for you. And all you need is to connect the scanner component to the camera. Barcode generator What if you want to generate your barcode. There is nothing easier, the TfgBarcode component allows you to generate a barcode of a popular format. Identification (Facebook, Google Sign In, VK Login, Apple ID) When your customers are working with the application, you may want to simplify the registration and authorization process for them. This will avoid filling out long user registration forms and improve the UX of your application. For this purpose, it is usually suggested to use third-party identification services, such as Facebook Login, Google Sign In, Apple Id and others. In the latest releases of FGX Native, we have added components that allow you to do this. Advertisement If you plan to earn money on your application by placing ads, then we have Google AdMob support for you (Android, iOS will be later). At the same time, you can embed banners with ads in your application or make a full-screen ad. Animation Almost any modern mobile application uses animation to one degree or another to improve the UX. FGX Native offers an API for performing native animation of components. In addition, we have developed ready-made animation templates that you can call with one line of code. And if you want to make complex vector animations, then we have an Airbnb Lottie for you with animation support from Adobe After Effect. Lottie-Demo-Sample.mp4.666bf68c84eed5fb76042e54a385ab9a.mp4 Google Pay and Apple Pay FGX Native supports two payment systems Google Play (Android) and Apple Pay (iOS, at the testing stage). Therefore, if you want to pay for an order in an online store directly in the app, you can also do it. Push-notification Push notifications are used to send client notifications from your server. These are the messages that appear in the notification center of your device. We support two types of push services FireBase (Android) and Apple Push Services (iOS). They are implemented on the basis of RTL System.PushNotification base. However, for our users, we provide a separate component that greatly facilitates the work with push notifications on the side of the mobile application. Digital signature Imagine that you have developed an application for the delivery of goods for couriers. They deliver the goods to the customer and they need to get confirmation from the customer that the order has been delivered. We have developed a component for entering a digital signature. Just let the customer leave a signature on the courier's phone screen. Localization Almost any international application primarily supports more than one interface language. Therefore, the application should be able to translate its interface on the fly in a good way. For these purposes, we supply an extension for the library in the form of a UI localization component. Taking photo And what if you need to take a photo or get a photo from the user's gallery? To do this, we have a special API for getting photos, both in a file and in TfgBitmap from camera or system gallery. Map If mapping services are important to you, then the TfgMap component is included in the library, which allows you to display system maps with the ability to add markers, polylines, lines and etc. Also, for Android, you can even specify your own style for displaying the map. Assets Special attention is paid to optimizing the use of different types of resources: Images, Fonts, Files, Lottie animation and etc. We abandoned the idea of storing resources in dfm and developed our own solution for centralized storage of resources. You can easily add any files, without having to know where the file is physically located and without having to suffer with the Deployment manager. In the same place, you can immediately color the uploaded images and apply the 9-patch effect. Material Design Icons How often have you encountered the need to search for icons for your application? In order not to spend a lot of time searching for suitable standard icons in your application, you can add them from Google Material Icons pack directly from Delphi in a couple of clicks. Image caching One of my favorite features is optimization the use of images in memory. Imagine that you have a regular news application with an endless list of news with a preview image displayed. The mobile device is limited by the size of the available RAM, so it will not be possible to load all the images into memory. The application will simply crash due to lack of memory. To avoid this, the developer usually needs to come up with his own system for uploading/uploading images when it is really needed. In FGX Native, we have already provided for this, and if the image is not used, it will be unloaded from memory automatically and reloaded only when it is really needed. Asynchronous image loading Separately, it is worth noting the task of displaying an image posted on the Internet. A typical way is to place images on the Internet, and dynamically upload them in the application in runtime. With just two lines of code, you can queue an image upload by URL from the network, without thinking about how to output it to the component when it is uploaded. TfgAssetManager.Current.AddBitmapFromUrlAsync('MyImage', 'http://data.fgx-native.com/images/photo-demo.jpg'); fgImage1.ImageName := 'MyImage'; Video Player We also provide video component for playing video from file or from stream. Web Browser If you would like to display web content, you can use WebBrowser component with supporting Basic-Auth, Javascript and SSL error handling. Popup In some cases, you may need to display contextual content. In this case, the Popup implementation is useful. Graphic components A set of primitive components is included in the delivery: rectangle, line, ellipse, circle, SVG Path and etc. They can also be used to build an interface. Canvas For those who do not have enough standard components, you can manually draw graphs or create your own image in the TfgBitmap buffer. Gestures The library supports standard types of gestures (Tap, Double tap, Long tap and Zoom). Standard components Of course, do not forget about the other standard components: buttons, text input fields, date pickers, checkboxes, indicators and much more. Additional tools We also supply a set of auxiliary tools that will be useful in mobile development. Android Log viewer When you are developing Android application, it's quite often, when you need to look at the system log for examination possible issues. Android API Delphi headers generator If you would like to use third-party Java libraries, we have our own tool for generating header files for Java. It is worth noting separately that we have developed our own Android-Delphi bridge, which is more convenient to use than in RTL and offers a number of additional features. -
We are too using Peak Systems hardware, but not with the free PCAN-Basic API (I tried it, but it was too much hassle), but the paid for PCAN-Developer 4 API. We use several PCAN USB interfaces per PC and many devices.The Delphi examples aren't that great though and there was at least one serious bug in one of them (I don't remember the specifics but it took me a while to figure it out. I reported the problem, so maybe they have fixed it by now.)
-
I'm using Peak System PCAN-USB interfaces with great success. In their PCAN-BASIC API, they have a Lazarus folder which contains PCANBasic.pas files you can use with Delphi. Those hardware and software are very reliable, I recommend it.
-
It has been quite a while, but I had a good experience with CANUSB.
-
You can start from here, they should have something for canbus (their hardware, PEAK CANBUS): https://www.peak-system.com/PCAN-Basic.239.0.html?&L=1&gclid=EAIaIQobChMIhOuR_8C6ggMVvJKDBx08TgQbEAAYASABEgLiAvD_BwE
-
New OpenSSL releases 3.1.4 and 3.0.12, and new resource files linked by ICS
Angus Robertson posted a topic in ICS - Internet Component Suite
OpenSSL has released new versions of the two active branches. These releases fix a medium severity bug with symmetric cipher key and initialisation vector (IV) length that can result in non-uniqueness, which could result in loss of confidentiality for some cipher modes. This does not effect SSL/TLS, only encryption using EVP_EncryptInit_ex2(). Windows binaries are available in SVN and the overnight zip file and separately from https://wiki.overbyte.eu/wiki/index.php/ICS_Download or https://www.magsys.co.uk/delphi/magics.asp Separately, YuOpenSSL has released 3.0.12 as commercial DCUs allowing applications to be used with OpenSSL without needing separate DLLs. In addition to the three DLL files, the zip includes a compiled RES resource file that contains the same DLLs, text files and version information, see the RC file. The RES file may be linked into application EXE files and code then used to extract the DLLs from the resource to a temporary directory to avoid distributing them separately. ICS V9.1 and later optionally support loading the resource file, currently in SVN and the overnight zip. The OpenSSL extract directory is shell path CSIDL_COMMON_APPDATA which in recent Windows versions is "C:\Users\All Users\" aliased as "C:\ProgramData\", in sub-directory "ICS-OpenSSl" with a sub-directory for each different OpenSSL major/minor version, ie "3012" for 3.0.12, ie "C:\ProgramData\ICS-OpenSSl\3012\libcrypto-3.dll". OverbyteIcsDefs.inc has a new define OpenSSL_Resource_Files which causes the resource file to be linked, the major/minor version being defined as OpenSSL_30, OpenSSL_31 or OpenSSL_32 (not supported yet), the actual resource files are LibV3xOpenSSL32.RES and LibV3xOpenSSL64.RES where x is the minor version. Note ICS supports linking specific major/minor versions of OpenSSL, but only one per application, but not multiple patch versions which don't have new features, only security and bug fixes. The RES files are distributed in the zip files with the DLLs from the ICS wiki site, with the latest versions in the source directory. If the new resource can not be found or there is a problem extracting the DLLs, ICS falls back to looking for OpenSSL DLLs as previous releases. The OverbyteIcsDefs.inc in SVN has define OpenSSL_Resource_Files enabled, so if copied will mean projects rebuilt will automatically have the OpenSSL resources linked without any other changes. A decision will be taken before the final release as to whether this is best behaviour, it does resolve a long term problem of DLL hell or keeping OpenSSL DLLs updated in potentially dozens of different directories, particularly if applications build to Win32 and Win64 directories, now a single set of any version is needed in "C:\ProgramData\ICS-OpenSSL". The only downside is larger EXE files, particularly if an application has multiple EXEs. ICS has a global variable GSSL_DLL_DIR that defines where to look for the OpenSSL files, defaulting to blank but set in all samples to the program directory so a known version of OpenSSL is loaded. Perhaps ICS should set this to "C:\ProgramData\ICS-OpenSSL" by default so only a single set of DLLs are needed. Only snag is automating a means of getting files to this directory if the resource files are not used. Angus -
I did. First half of it or so was focused on C++, showing off Visual Assist integration. Not relevant to me, but the Find Related feature is enviable and it would be nice to see the same for Delphi. The section on what's new for VCL and FMX seemed short by comparison and there was a lot of "I can't go into details about this in the time we have." Personally I think it would have made sense to break out the C++ stuff into another webinar. My honest impression for the Delphi side of things is that you can read the release notes and get the same benefit in a lot less time than watching the webinar, but it's still nice to see some of it demonstrated. I'm sure they will eventually post it to YouTube.
-
Checked again this morning on myEmbarcadero, and now "with mobile" was added to my key. I reentered the key into the licence manager and magically Android and iOS appeared as target platforms :)
-
ANN: New versions of Almediadev products with RAD Studio 12 Athens support
Almediadev Support posted a topic in Delphi Third-Party
We are glad to announce that all our products support new RAD Studio 12 Athens! https://www.almdev.com https://www.delphistyles.com -
Script Errors galore when launching Delphi
Attila Kovacs replied to instrumentally's topic in Delphi IDE and APIs
What menu is that? Found it in the main menu context. It looks like I uninstalled (along with many others) the BPL that had this community thing. -
Script Errors galore when launching Delphi
instrumentally replied to instrumentally's topic in Delphi IDE and APIs
Changing the values makes no difference. Here is the solution: -
Why does Delphi 12 marginally bloat EXE file size compared to 11.1?
Anders Melander replied to PaulM117's topic in RTL and Delphi Object Pascal
I'm pretty sure that depends on who "you" is. So far I haven't found one. -
Why does Delphi 12 marginally bloat EXE file size compared to 11.1?
Anders Melander replied to PaulM117's topic in RTL and Delphi Object Pascal
It's possible to care about more than one single thing. Personally, I care a lot about performance but I also care about code readability, ease of UI design, and TBH, the amount of fun I have writing the code. If I only cared about performance then I probably wouldn't use Delphi. -
This work on modernization is the foundation as potential future support for Android and iOS requires more modern toolchain.
-
I have a project that I originally started for a presentation at the ADUG 2023 Symposium, which was on AI and ChatGPT. Since then I have continued to improve it and added more features to it. One of the goals of this project is to provide a library to Delphi Developers that enables them to easily use various AI models / engines that are currently available. Currently this is mostly done through calling various different REST API's that different companies provide, although another goal is to enable models to be used locally where practical. Features include: - Voice Recognition - Text to Speech - Image Generation - Face Detection - Large Language Models (LLM) like GPT. I have created various example programs that exercise the different API's as well. Today, OpenAI released some new features and API's. I have since added support for Dall-e-3 and the Text to Speech engine so far. To find out more have a look at https://github.com/geoffsmith82/Symposium2023
-
ANN: New versions of Pascal Analyzer, Pascal Expert and Pascal Browser
Peganza posted a topic in Delphi Third-Party
New versions of our products are released: Pascal Analyser 9.12.2 Static code analyzer Browse the online documentation here https://peganza.com/PALHelp/index.html Pascal Expert 9.12.2 Plug-in for RAD Studio, subset of Pascal Analyzer Browse the online documentation here https://peganza.com/PEXHelp/index.html Pascal Browser 3.5.20 Creates documentation for your source code Browse the online documentation here https://peganza.com/PABHelp/index.html Go to https://peganza.com to learn more. -
If you use a suitable column type alias in your SQLite table definition, FireDAC will figure out the correct field data type to use. DATE | SMALLDATE dtDate DATETIME | SMALLDATETIME dtDateTime TIMESTAMP dtDateTimeStamp TIME dtTime https://docwiki.embarcadero.com/RADStudio/Alexandria/en/SQLite_support_in_RAD_Studio
-
To react to this, here is the structure I used
-
First declare fields Then set event on GetText for the field and code the event procedure TForm1.FDTable1Date_exitGetText(Sender: TField; var Text: string; DisplayText: Boolean); begin if Sender.IsNull then text:='n.d.' else Text:=FormatDateTime('mm-dd-yyyy',UnixToDateTime(Sender.Value)); end; on design date_exit should be an integer but at run time "magic" happens Now let speak about another method for Timestamp type (my date_create) You just have to set property displayformat to get the date_create formatted at runtime but also at design time (yellow)
-
Storing and Displaying DateTime Values in SQLite DB
Fr0sT.Brutal replied to new_x's topic in Databases
FDQuery.FieldByName('enterance_time').OnGetText Or try something from this topic https://en.delphipraxis.net/topic/3458-firedac-sqlite-datetime-field/ -
FIY: Sort algorithms found by Deep learning
Sherlock replied to Tommi Prami's topic in Algorithms, Data Structures and Class Design
I read this with mixed feelings. Firstly it's cool, that reinforced learning can come up with "faster sorting" but then... It is kind of irritating, that a code review was not able to find those improvements in "ALPHA DEV swap move". -
Parse Json String
programmerdelphi2k replied to grantful's topic in Algorithms, Data Structures and Class Design
here a sample to convert a JSON to Dataset uses REST.Response.Adapter, System.JSON; procedure JsonToDataset(aDataset : TDataSet; aJSON : string); var JObj: TJSONArray; vConv : TCustomJSONDataSetAdapter; begin if (aJSON = EmptyStr) then begin Exit; end; JObj := TJSONObject.ParseJSONValue(aJSON) as TJSONArray; vConv := TCustomJSONDataSetAdapter.Create(Nil); try vConv.Dataset := aDataset; vConv.UpdateDataSet(JObj); finally vConv.Free; JObj.Free; end; end; -
Parse Json String
programmerdelphi2k replied to grantful's topic in Algorithms, Data Structures and Class Design
uses System.JSON; procedure YourProcedure; var jsonArray: TJSONArray; jsonObject: TJSONObject; begin jsonArray := TJSONArray.Create; // Add each object to the JSON array jsonObject := TJSONObject.Create; jsonObject.AddPair('Value', 'CHRYSLER'); jsonObject.AddPair('ValueId', '477'); jsonObject.AddPair('Variable', 'Make'); jsonObject.AddPair('VariableId', '26'); jsonArray.AddElement(jsonObject); jsonObject := TJSONObject.Create; jsonObject.AddPair('Value', 'CHRYSLER DE MEXICO TOLUCA'); jsonObject.AddPair('ValueId', '1002'); jsonObject.AddPair('Variable', 'Manufacturer Name'); jsonObject.AddPair('VariableId', '27'); jsonArray.AddElement(jsonObject); jsonObject := TJSONObject.Create; jsonObject.AddPair('Value', 'PT Cruiser'); jsonObject.AddPair('ValueId', '3595'); jsonObject.AddPair('Variable', 'Model'); jsonObject.AddPair('VariableId', '28'); jsonArray.AddElement(jsonObject); jsonObject := TJSONObject.Create; jsonObject.AddPair('Value', '2003'); jsonObject.AddPair('ValueId', ''); jsonObject.AddPair('Variable', 'Model Year'); jsonObject.AddPair('VariableId', '29'); jsonArray.AddElement(jsonObject); // Convert the JSON array to a string ShowMessage(jsonArray.ToString); jsonArray.Free; end; here you had a JSONArray with 4 elements. each element has 4 pairs (key:value). some like this. now see on help to "Get" the values for i := 0 to jsonArray.Count - 1 do begin jsonObject := jsonArray.Items[i] as TJSONObject; if jsonObject.GetValue('Variable').Value = 'Model' then begin // Found the object with "Model" variable, get the "Value" value ShowMessage(jsonObject.GetValue('Value').Value); Break; end; end;