Leaderboard
Popular Content
Showing content with the highest reputation since 10/21/24 in all areas
-
Signotaur Code Signing Server - Looking for beta testers
Vincent Parrett posted a topic in Delphi Third-Party
Hi All We have developed a client/server product to handle code signing. This makes it simple to code sign from any machine and avoid the dreaded token password prompts. It also supports file based certificates for those who still have valid ones! The client is a single exe (with a similar command line interface to signtool.exe) - 64 bit windows 10/Server 2016 or later (may run on earlier versions but not tested). The server is supported on Windows 10/Server 2016 or later (may run on earlier versions but not tested). Linux support for the server is planned (we have it building but have not tested yet). The server has a web interface for configuring it (adding certificates, managing users etc). We have tested with Safenet tokens (with our own cert) and with Yubikey tokens (with self signed cert). It should work with any token that provides a 64bit pkcs#11 2.4 library dll. We are especially interested in hearing from people with Yubikey tokens (since we have only tested with self signed cert). The token needs to be available to the server machine, either plugged in directly or via usb passthrough for vms, or via virtualhere. We’re still working on docs but it’s pretty simple to get up and running with it, we’ll provide some instructions with the download info etc. If you are interested in testing this product email support @ finalbuilder.com - let us know what kind of token you have. -
Structural highlighting has also been added. Technical details.
-
ANN: HTMl Library 4.9 released. WebUI and more
Alexander Sviridenkov posted a topic in Delphi Third-Party
WebUI - new LowCode Web framework for Delphi. See https://youtu.be/XCmvz2DPN4Y Documentation: https://delphihtmlcomponents.com/webui/ Sample project: https://delphihtmlcomponents.com/webui.zip How to use 1. Extract files from zip. 2. Run nw.exe (requires Administrator because uses http.sys web server) 3. Enter your DB connection details or leave demo DB 4. Press Create UI 5. After UI is created press Start server and open http://localhost:8080 in browser. Core New THtListView component (VCL/FMX) - display data in listview-like layout with full HTML support. THtDocument.AsBitmap method - convert document to bitmap. New printing parameter - PrintAsBitmap. Useful when printing white text over black/colored background. TElement.AddCSSRecursive(const CSS: string; UpdateStyleAttr: boolean = false) - set property for element and its descendants. SVG: support for switch element. THtXMLNode.JSON method - save to JSON THtXMLNode.XML property - set node inner XML. THtJSONSerializer class - serialize objects and records into JSON. Templates: support for conditional sections: {{@name}}..{{/name}} - name is not empty {{@!name}}..{{/name}} - name is empty Templates: class functions for rendering and JSON support (result is encoded as JSON): RenderTemplate(const ATemplate: hstring; AContext: THtXMLNode; JSONMode: boolean = false): string; RenderTemplate(const ATemplate: hstring; AContext: TStrings; JSONMode: boolean = false): string; Templates: ThreadSafeRender methods - can be called simultaneously from different threads. New VCL and FMX unit htprinters / fmx.htprinters - manage printer setting - set custom paper size, list available paper sizes, etc. New unit htboxes - calculate optimal layout of boxes on pallets and inside container. See PalletCalc demo. Scripter x64: support for var parameters in methods Support for calling interface methods Write and Writenl functions - output to debug console. New HTMLtoText(const s: string) function. Console.log/warn/error messages without debugger are sent to system log (OutputDebugString). Editor Improved Markdown conversion (better lists support) Reports Barcode element - new type: auto - select barcode type depending on data length and symbols. SQL TSQLSelectStatement - new methods AddTable AddJoinedTable Advanced CreateQueryforTable method. Improved support for limits in different dialects TSQLContext: JSONMode property. new AddSelectQuery method. PROGRESSBAR SQL function. TSQLParam.ValuefromString method. New TDMField properties: property ContentType: string; property MaxDataLength: integer; property UniqueValuesCount: integer; property UniqueValuesPercent: single; property UniqueValues: string; New TDMTable method: FillContentTypes - analyze table data and fill field properties. New TDMTable method GetReferencedTabler - return tables that reference this table in FK. New TDMTable properties: property RecordCount: integer; property TableType: string; New TDMQQuery methods function AsRowData(Limit: integer = 0; LowerCase: boolean = false): THtXMLNode - serialize to XML function AsJSON(Limit: integer = 0): string - serialize to JSON function InsertXML(const Table: string; Fields: THtXMLNode; Schema: TDMSchema; ReturnKey: boolean = false): TDMQuery; - insert to table using parameters from XML attributes. function UpdateXML(const Table: string; Fields: THtXMLNode; Schema: TDMSchema): TDMQuery - update table using parameters from XML attributes. procedure ToXML(ANode: THtXMLNode) - serialize to XML function ExecWX(Params: THtXMLNode; const ASQL: string): TDMQuery - execute query using parameters from XML attributes. New method TDMVirtualSchema.RegisterQuery(const SQL, TableName: string; const TableDescription: string = '') - register SQL statement as virtual table. TDMDictionary class - abstract class for application dictionaries. Implementations: TDMSQLDictionary TDMStringDictionary TDMJSONDictionary TDMDictionaryManager - application dictionary manager class. TDMVirtualQuery class - class for performing SQL queries on virtual databases. Office Faster snippet extraction. Support for DOCX embedded fonts. Improved rendering quality for PDF, XLSX, RTF, Outlook, DOC and DOCX formats. Better search in code files (PAS, C, etc.). Support for referenced images (cid:) in Outlook messages. -
What could possibly go wrong
-
Flow control symbols have also been added: Technical details.
-
@Jim McKeeth has updated the GExperts documentation a bit. It’s far from finished but that’s better than the totally outdated one on gexperts.org. I have now exported it as webhelp and checked it in to subversion. You can read it at my newly created domain help.gexperts.de. (The domain is temporary only for now. I got it cheap but I’m not sure I will keep it.)
-
With 12.2 Patch 1 just dropping, we've all spent some time updating. I have a process for updating, but I'm always curious what everyone's process is. I'll share mine: Ideally I have a complete backup of my system Backup my activation/license files: "C:\ProgramData\Embarcadero" (I just zip files and folders including hidden) Your activation should still work after a recovery if your computer name doesn't change Backup settings with MigrationTool "C:\Program Files (x86)\Embarcadero\Studio\23.0\bin\migrationtool.exe" I used to always export the registry too, but haven't that in a while. Might still be useful. Computer\HKEY_CURRENT_USER\Software\Embarcadero\BDS\23.0 Manually backup GetIt Packages via GetItCmd (ran from the RAD Studio Command Prompt): getitcmd -l= -f=installed >getitpkgs.txt Uninstall all the GetIt packages (Parnassus seems to be the most likely to cause trouble, but FMXLinux has hit me too, so I just uninstall them all) Get the packages names from the manual backup getitcmd -u=FmxLinux-12-1.78;ParnassusCoreEditor-12-1.6.4.1;CodeSite-5.4.4;AWSSDKforDelphi-12 Start the installation Let it automatically uninstall, keeping the settings (the default) Before it starts the install I manually delete the CatalogRepository folders C:\Users\jim\Documents\Embarcadero\Studio\23.0\CatalogRepository C:\Users\Public\Documents\Embarcadero\Studio\23.0\CatalogRepository Manually reinstall the GetIt packages getitcmd -i=FmxLinux-12-1.78;ParnassusCoreEditor-12-1.6.4.1;CodeSite-5.4.4;AWSSDKforDelphi-12 The MigrationTool doesn't seem to like restoring to the same version it was backed up from, which is frustrating, but maybe I'm missing something. When I restore from a backup of 12.x then 12.x is missing from the dropdown list. I've never had to use it, but in theory I figure I could edit the backup file to make it work if worse comes to worse.
-
SynEdit now has annotated Scrollbars. In this screenshot you can see in the scrollbar: the position of the multiple carets (full blueish line) lines with errors (full red line) the position of the bookmarks (mini bluish marks on the left) line modification info (on the right side) alpha-blended slider This feature is on the multicaret branch. Zoom In/Out/Reset functionality has also been implemented. You can still vote on this poll to influence future development. See the technical details. See also SynEdit now supports mulit-caret, multi-selection editing - I made this - Delphi-PRAXiS [en].
-
That benchmark proves almost (*) nothing, the only point where it allocates is during the form creation where it builds the card deck and later when it prints the output into the TListBox. (*) the only thing affected here is the possible layout of the card objects in the heap as they are all read during the hand-processing code. The difference that you can observe here between Delphi buids using different memory managers is most likely caused by the amount of overhead the respective memory manager is using thus fitting more card objects within the same memory pages, thus more of them (most likely all on modern processors) fitting into L1 cache. As for this particular code - removing the name of the Cards from the object and only building it when it is needed for some UI would probably speed up code more than anything else because you get rid of 20 Byte for every object (Name is a string[19]) - on my CPU this makes the code go down from ~900ms to ~680ms - simply because it does not need to copy the strings in CopyCardFromDeck. Circumventing the getter and setter of TList (which contribute around 25% of the remaining time) brings it down to 460ms. And after that we are not done with string stuff - in every loop iteration, it calls Hand.SetHighValues which produces a name for the cards on the hand - removing that gets me down to ~400. Now because I have a run and SamplingProfiler open already I see that now one of the scorers is TcaaPokerHand.CopyCardFromDeck - the Items getter is not inlined which causes it to be called 10 times for the same 2 card objects. Changing that gets me down to 270ms. But how about avoiding repeated access to the same object in the 2 lists altogether? 230ms I could go on because I see a lot more room to optimize - but I think I made my point. Instead of fiddling with the memory manager one should first look if heap allocations are even the issue. And then identify unnecessary work and eliminate that. ... change TcaaEvaluationCard to be 8 Byte size - (that avoids that the compiler creates a movsd/movsb instruction but simply does an 8 byte mov) -> 160ms
-
If you were using the RTL dictionary with its abysmal performance, that does not surprise me at all. Mostly because of its poor hash function, replacing that with a better one speeds it up significantly. However, string interning does not require a dictionary with key/value but just a hashtable for strings. DelphiAST has the option to use one for its parsing - we needed that when using it in the context of the IDE to avoid spikes in memory consumption.
-
@PeterBelow It is even possible to inject new properties to the Object Inspector. In Cmon.DataSense.Design.pas I use this technique to add a DataSource and DataField property to supported controls. The additional data is stored in a special component (TDataSense) using a dictionary internally:
-
That sounds more like Quantum Mechanics than Mathematics.
-
This might work getitcmd -i=fmxlinux-12-1.78 this is the version that is installed in 12.1, and if you use the getitcmd from the RAD Studio command-prompt it should install and work.
-
New OpenSSL release 3.4.0 and new resource files linked by ICS
Angus Robertson posted a topic in ICS - Internet Component Suite
OpenSSL has released a new feature version 3.4.0 (no security fixes). It includes support for integrity-only cipher suites, a random seed source JITTER, and other new crypto functions. Also support for X509 attribute or authorization certificates, that may be used to control installation of software on devices from software stores, ICS does not support AC yet. The QUIC server implementation planned for this release has been postponed to 3.5 in April 2025. 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 In addition to the three DLL files, the zips include compiled RES resource files that contain 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. These OpenSSL versions are included with ICS V9.4 beta available from SVN and the overnight zip. Beware OpenSSL 3.4.0 has exposed a minor ICS bug creating X509 certificate requests and creating CA signed certificates, which is fixed in SVN for V9.4. or a one line change for earlier versions. Also note when building the ICS packages for the first time with 3.4.0, there may be a dialog 'entry point could not be located', because the new DLLs are only extracted from the resource files when the first application is run, but the packages have built OK. ICS V9.4 beta now defaults to using OpenSSL 3.4.0, provided the new OverbyteIcsDefs.inc files is installed. Angus -
ICS v9.3 Android?
Angus Robertson replied to PolywickStudio's topic in ICS - Internet Component Suite
Another ICS user attempted to add Android support to ICS last year, but it never worked, and the code has now been removed, Currently, ICS has limited support for Linux for tools and utilities only, particularly SSL/TLS certificates, but not TCP/UDP sockets. Those functions would probably also work today on Android with minor changes to look for the OpenSSL in the correct path, you should be able to debug the code yourself, but I'm not testing Android until Linux is fully working. I'm now working on the full Linux implementation, replacing the existing MacOS only support with new multiplatform support, it will be several weeks work. Angus -
I have been using it for about a week now and don't see any such problems. So either I have got a very special installation or you have one. edit: There are quite a few minor glitches though, but it's getting better.
-
I very much like the "Filter Explicit properties" expert. However, in recent versions of Delphi (not sure when it started), the IDE inserts annoying DesignSize properties that "pollute" the Dfm and the revision history. It would be really nice if the expert was renamed "Filter DFM properties" and included the option of removing these DesignSize properties.
- 11 replies
-
Putting Delphi Application inside web page
Ian Branch replied to Robert Gilland's topic in Delphi Third-Party
Yep. Use it all the time. So do my Customers. It means that I only need to maintain one App and it can be accessed via LAN, WAN, RDP or WEB. It is accessed on the WEB via any Browser. The only issues I have had was more of issues with portable devices/tablets and some compatabilities that need to be accepted or worked around. Particularly mousing. -
Feature enhancement request - Filter DFM properties
Uwe Raabe replied to pyscripter's topic in GExperts
And Embarcadero still refuses to implement this feature request (despite its 188 votes): RSP-35301 - Option to design in Screen PPI but save in 96 PPI For me and quite a couple of other users that is mandatory for using the IDE in High-DPI.- 11 replies
-
Execution time difference between 32b and 64b, using static arrays
Stefan Glienke replied to lg17's topic in General Help
It looks like whoever implemented that in the Delphi compiler was overly obsessed with codesize. If you compare what both gcc and clang do you can see that they rather produce a ton of mov instructions (which execute nicely in parallel on modern processors) before using memmov or rep: https://godbolt.org/z/Gjsqn7qas (change the size of the static array to see the assembly code change) -
Feature enhancement request - Filter DFM properties
Jim McKeeth replied to pyscripter's topic in GExperts
I was talking to someone the other day about this too. I had thought about creating an IDE add-in to effectively "lock the form," where it ignores all those "accidental" changes. I think it would be really useful to also ignore things like active tab in the tab control, etc. Usually when I'm submitting changes in source control I only want to submit the minimum changes for the fix I made, but then I want to make sure that that subset works, so I have to revert unneeded changes, test that code state, and then submit it. So a filter or lock would be really helpful.- 11 replies
-
The first step is to re-think whatever series of choices led to this abysmal state.
-
Suggestions for improving the display of tabs in the SourceCode editor
havrlisan replied to PeterPanettone's topic in Delphi IDE and APIs
Instead of hardcoding it like this and making it optional (which makes little sense), it would be better to fill the Tab Options (Options > Editor > Tab) with way more options, such as choosing colors for each scenario (locked units, system units, etc.), or disabling them altogether. -
I sort of assumed that 16777619 in that code was a prime, but wanted to check... ChatGPT 4o mini said "No". So, I asked CoPilot in Norwegian - and it said "No" (Nei) On a whim, I then asked it in English LLMs - Lovely Lying Machines.
-
This is the unit @Stefan Glienke was referring to. 100 lines and it uses no other unit!