Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation since 10/21/24 in all areas

  1. 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.
  2. pyscripter

    SynEdit now has annotated Scrollbars.

    Structural highlighting has also been added. Technical details.
  3. 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.
  4. Brandon Staggs

    tag as String

    What could possibly go wrong
  5. pyscripter

    SynEdit now has annotated Scrollbars.

    Flow control symbols have also been added: Technical details.
  6. @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.)
  7. Jim McKeeth

    What is your Update Process?

    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.
  8. 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].
  9. Stefan Glienke

    win11 24h2 msheap fastest

    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
  10. Stefan Glienke

    String memory usage

    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.
  11. Uwe Raabe

    tag as String

    @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:
  12. Uwe Raabe

    String memory usage

    That sounds more like Quantum Mechanics than Mathematics.
  13. Jim McKeeth

    fmxLinux missing?

    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.
  14. 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
  15. Angus Robertson

    ICS v9.3 Android?

    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
  16. dummzeuch

    Delphi 12.2 Patch 1

    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.
  17. 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.
  18. Ian Branch

    Putting Delphi Application inside web page

    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.
  19. Uwe Raabe

    Feature enhancement request - Filter DFM properties

    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.
  20. 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)
  21. Jim McKeeth

    Feature enhancement request - Filter DFM properties

    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.
  22. Brandon Staggs

    tag as String

    The first step is to re-think whatever series of choices led to this abysmal state.
  23. 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.
  24. Lars Fosdal

    String memory usage

    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.
  25. pyscripter

    String memory usage

    This is the unit @Stefan Glienke was referring to. 100 lines and it uses no other unit!
×