Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 09/24/25 in Posts

  1. Remy Lebeau

    How to zip sources larger then 4GB?

    It was added in Delphi 11 Alexandria: https://docwiki.embarcadero.com/RADStudio/Alexandria/en/What's_New#RTL:_TZipFile
  2. Stefan Glienke

    UltraCode64 for Delphi (aka 64-bit FastCode)

    Man, that UltraCode project really took off in the past 6 years, didn't it?
  3. alogrep

    Rad Studio 13?

    HI. Is there an upgrade option/price from Rad Studio 12.3 to Rad Studio 13? Thanks
  4. Vincent Parrett

    New YAML Parser Library - VSoft.YAML

    Hi All I have released a new YAML Parser/Emitter library for Delphi XE2 or later. It is pure delphi code, tested with Win32 and Win64 but it should work for other platforms too (no winapi dependencies). Supports YAML 1.1 (partially) & 1.2 JSONPath queries with filter expressions Multiple Document streams. https://github.com/VSoftTechnologies/VSoft.YAML
  5. Thanks to Dave Nottage, The code you provided works perfectly.
  6. Anders Melander

    Delphi code on gitlab/github

    Troll much?
  7. I have pending to add a "brute force" test to verify these functions work 100% correct. Basically a loop from zero day (Dec 30th 1899) or negative, til year 3000 or more, checking and comparing with the RTL ones. (Just to be sure its fine)
  8. Nice i'll include your functions. From your testing seems free pascal has faster functions than Delphi will have to check this
  9. aehimself

    How to zip sources larger then 4GB?

    I have a faint memory that somewhere around D11 or D12 Zip64 was added to System.Zip's very own TZipFile, getting rid of the 4GB limitation.
  10. Remy Lebeau

    How to zip sources larger then 4GB?

    I'm assuming you are using this one? https://github.com/edwinyzh/ZipMaster In what way does it not work? Are you getting an error? Data corruption? Something else? What does your code look like that is not working? If ZipMaster doesn't suit your needs, then just use a different Zip library. There are plenty of them available.
  11. Vincent Parrett

    RAD Studio 13 project build speed is slower

    Unless your resources change often - I would avoid building them all the time. I guess you added the .rc files to the project? This has always been a bad idea imho - build the resources separately (create a batch file if needed) and then just use the .res files.
  12. dummzeuch

    New Delphi features in Delphi 13

    I was at the Pascal Conference last week (and not at the Delphi event, because I found that too expensive for a marketing event, but I degrees). Sorpetaler, who organised it and also sponsored the community days on the weekend, had also managed to in invite a group of students (from some school in Dortmund I think). Among other things, they got an introduction into Pascal and the cool things you can do with it, and each got a USB stick with a portable Lazarus installation. I'm not saying that each of them will now become a Pascal programmer, but at least they have now seen that there are people and at least one company is using it. And the tour through the production facility definitely was impressive. We'd need similar events for Delphi, including a free license, of course. But I have little hope that the latter will be forthcoming. (Of course there is CE).
  13. This public repository: JavierusTk/VSCode-Switcher: Tool to edit Delphi files simultaneously between Delphi IDE and Windsurf, so it allows to take advantage of the AI tab completion is 100% coded with Claude Code; the documentation is made with Claude.ai (the chatbot), except the files README.md and CLAUDE.md, that were made by Claude Code itself It's a small tool to allow you take advantage of Windsurf "TAB-coding". It's amazing how much it helps with boilerplate-kind code
  14. After many times of copying and pasting debug messages (OutputDebugString) from the debugger view to the Claude Code (CC) form, so it could read it all, I decided making a MCP server that will just provide that: services to catch and read debug messages I had no idea on how to do that, but nevertheless asked Claude (rhe chat) to make a plan for it, so CC could just follow the instruction. Then asked CC to add it to one test MCP server I already had working. With help from another CC instance that connected to the server and tried using it, and finding why it errores, it's working now I've attached the initial document that Claude made (could have asked it to GPT or Gemini or whatever) Then I asked the CC instance that was using it for helpful enhancements I've attached both documents If there is interest on it, I could make a public repo MCP-debug-server.md MCP-debug-server-enhancements.md
  15. Javier Tarí

    MCP server to catch windows debug messages

    Here it is; I used the GTK repo for the MCP server itself. You and anyone can use my code in any way without need to give me anything; not a link, not nothing. JavierusTk/MCPServer
  16. Brandon Staggs

    New Delphi features in Delphi 13

    Once again, it seems that Delphi's strength is the fact that there are legacy applications locked into it. The cost of abandoning millions of lines of code is far greater than continuing with an IDE that appears to be on life support with failing equipment. No refactoring. No code formatting. Yeah, I get that refactoring didn't work well and that lots of people (myself included) did not trust CTRL+D. But this is not a modern IDE. It just isn't. You can't remove basic functionality like refactoring and pretend to be a professional IDE. A couple of weekends ago I set up VS Code to write and debug 6502 assembly on an attached emulator. It was astonishingly smooth. It was fun to use. Everything just works. If it wasn't for the difficulty of dealing with hundreds of visual forms I would be looking into getting a Delphi build environment working in VS Code.
  17. Dalija Prasnikar

    New Delphi features in Delphi 13

    Support for what? There is no free support. Only for installation problems and I don't think there are to many of those. Embarcadero needs to lower low end prices to bring in new users. I doubt there are many prospective new users willing to shell out over 1600$ on new PRO license. Not to mention that there is no upgrade path for existing users with old versions. They need to pay full price.
  18. Vincent Parrett

    New Delphi features in Delphi 13

    To add to the VS information - you can use Visual Studio Community Edition for commercial use: it's free for individual developers and non-enterprise organizations with fewer than 250 PCs or under $1 million USD in annual revenue. It's trivial to install and manage the license for the community edition - and it does a lot (no db limitations etc). That makes Delphi a very unattractive proposition for people starting out. The only place where Delphi wins out (ignoring the price) is for Desktop Windows applications. For everything else, there are better options. I wish it were not the case, but it's too far behind now to ever be able to compete in many spaces (like web, mobile etc).
  19. Dalija Prasnikar

    New Delphi features in Delphi 13

    VS Studio PRO one time purchase is 499$ https://www.microsoft.com/en-us/d/visual-studio-professional-2022/dg7gmgf0d3sj Also VS 2022 Enterprise includes Azure and other stuff. There is also as subscription only Enterprise which is 250$ per user monthly again with basic Azure plan. And there is PRO subscription which is 45$ per user monthly. Right now RAD Studio is extremely overpriced. I cannot comment on Enterprise version and the value it provides, but PRO is literally out of reach for many people who would otherwise more than willing to pay some amount of money comparable to what JetBrains or MS offer on the low end. Not to mention that it does not include Linux compiler which is rather ridiculous. Compare that to Delphi 99$ license with which they started 30years ago (which is around 250-300$) in today's value. If Embarcaderos wants to revive Delphi, they seriously need to change their pricing policy on the low end for PRO SKU and even having additional low cost Community edition with perpetual license would take them a long way.
  20. Joseph MItzen

    New Delphi features in Delphi 13

    Heh, I proposed a ternary operator in 2012 and learned that Craig Stuntz and another individual whom I can't recall had already submitted a QC request, even including proposed syntax, in 2008! So it only took 17 years, but Ian Barker is waxing poetic about how the ternary operator shows that Embarcadero, almost unique among programming languages, listens to feedback from its users (yes, he really wrote that). I don't think he realizes that almost all other languages are open source and their features are totally driven by their users. The funny thing is that, to the best of my recollection, Embarcadero actually used the same syntax Stuntz and friend proposed in 2008!
  21. Joseph MItzen

    New Delphi features in Delphi 13

    Modern IDEs enforce style guides. Modern IDEs were 64-bit a long time ago. Modern IDEs don't break, remove features, then promise to restore them "at some point". Modern IDEs have enough software developers assigned to them to have all features completed before shipping. Modern IDEs don't ship in an incomplete state. Delphi, C++Builder and Interbase, for some time now, do not have enough developers to continue to adequately maintain the products. We've seen code completion break for two years, failure to meet the Android 64-bit requirement date, the current fiasco, Interbase's Python driver fail to work with boolean fields for two years (!!!) until I embarrassed Ian Barker about it after his Interbase webinar when he'd bragged about the driver support, and my favorite, something breaking in the C++Builder tool chain such that, for two years now, all cross-platform compilation has ceased to work and they've taken it out of the product description. Could you imagine paying $1600+ for a cross-compiling C++ toolchain and then the cross-platform feature just disappearing? You can't charge 3 times the cost of Visual Studio, or 6x-16x the cost of a Jetbrains IDE, and have such basic features as code formatting and refactoring disappear. These are almost as basic functions as an undo option or find and replace. They're core to what an IDE is supposed to offer. Imagine giving a sales presentation to a potential IDE purchaser alongside Microsoft and Jetbrains sales reps (in another lifetime I worked at a company where just these kinds of presentations were sometimes held). Imagine what the MS and JetBrains reps would say during their presentations in response to the revelation that your IDE lacks code reformatting and refactoring? THAT'S why this is a big deal.
  22. This is a real example, not even a chosen one. It's to show not the programming itself, but just to show how is it to work with Claude Code Note: some of the identifiers are spanish, as I'm spanish and I tend to mix spanish and english in my code. Strings that interact with the user in any way are in spanish, because the suers are spanish Inside one of my ERP application folders, there is a group of units that help the user with inserting them in the system. They handle PDF of the Purchase Invoices, use IA on them, and reduce the user work by around 80-95%. It's fully finished, although will have further refinements. There is a file documenting them, called ganProveedoresFacturaRapida.md I jsut gave Claude this prompt: "read ganProveedoresFacturaRapida.md; we will refactor it for good practices, starting with DRY" and it presented me a plan Then instead of appying it, I made a new prompt: "Make redactoring-plan.md with your plan, and anything else needed so another IA agent can implement it just by reading the main documentation and this .md" It's answer: ● I'll create a comprehensive refactoring plan document that another AI agent can follow to implement the DRY improvements. ● Write(ganProveedoresFacturaRapida-refactoring-plan.md) ⎿ Wrote 739 lines to ganProveedoresFacturaRapida-refactoring-plan.md # DRY Refactoring Plan for ganProveedoresFacturaRapida Module ## Executive Summary This document provides a detailed plan to refactor the `ganProveedoresFacturaRapida` module to eliminate code duplication and improve maintainability following DRY (Don't Repeat Yourself) principles. The module currently has ~2500 lines with significant repetition that can be reduced by ~30%. ## Current State Analysis ### Module Overview - **Purpose**: AI-powered rapid supplier invoice entry system … +729 lines (ctrl+o to expand) ● I've created a comprehensive refactoring plan document at /mnt/w/Clientes/GAN/ganProveedoresFacturaRapida-refactoring-plan.md. The document includes: 1. Executive Summary - Overview of the refactoring goals and expected improvements 2. Current State Analysis - Detailed list of DRY violations with code examples 3. Refactoring Design - New architecture with helper classes and services 4. Implementation Plan - Three-phase approach with complete code samples for new classes 5. Migration Guide - Step-by-step instructions for developers 6. Code Mapping Table - Shows exactly how to replace old patterns with new ones 7. Risk Assessment - Identifies potential issues and mitigation strategies 8. Testing Plan - Unit, integration, and regression testing approach 9. Code Examples - Before/after comparisons showing the improvements The plan provides everything needed for another AI agent or developer to implement the refactoring: - Complete class definitions with methods - Clear mapping of old code to new patterns - Specific file locations and naming conventions - Testing requirements - Expected metrics (30% code reduction, improved maintainability) The refactoring follows DRY principles by consolidating repeated patterns into reusable helper classes: - TInvoiceFileHelper - All file operations - TTimeoutManager - Timeout and retry logic - TStatusManager - UI status updates - TBatchProcessor - Batch processing service - TAnalysisConfig - Centralized configuration This approach will transform the module from procedural code with 40% duplication to a well-structured, object-oriented design with less than 10% duplication. I've attached the file it generated, as-is ganProveedoresFacturaRapida-refactoring-plan.md
  23. David Heffernan

    New Delphi features in Delphi 13

    The tooling in RAD Studio is more than a decade behind the many other IDEs around. It's feeble that we are making excuses for it not being able to do basic refactorings.
  24. David Heffernan

    Rad Studio 13?

    If you let your subscription lapse then they charge you full price for a new license because they are unscrupulous and hate their customers
  25. Dave Nottage

    Android 15 and edge-to-edge enforcement

    uses Androidapi.Helpers, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.Os; function IsFullScreen: Boolean; begin Result := (TAndroidHelper.Activity.getWindow.getAttributes.flags and TJWindowManager_LayoutParams.JavaClass.FLAG_LAYOUT_NO_LIMITS) > 0; end; function GetResourceHeight(const AResourceName: string): Single; var LID: Integer; LResources: JResources; begin Result := 0; LResources := TAndroidHelper.Context.getResources; LID := LResources.getIdentifier(StringToJString(AResourceName), StringToJString('dimen'), StringToJString('android')); if LID > 0 then Result := LResources.getDimensionPixelSize(LID) / TAndroidHelper.DisplayMetrics.density; end; function GetTargetSdkVersion: Integer; var LApplicationInfo: JApplicationInfo; begin LApplicationInfo := TAndroidHelper.Context.getPackageManager.getApplicationInfo(TAndroidHelper.Context.getPackageName, 0); Result := LApplicationInfo.targetSdkVersion; end; function CheckBuildAndTarget(const AValue: Integer): Boolean; begin Result := (TJBuild_VERSION.JavaClass.SDK_INT >= AValue) and (GetTargetSdkVersion >= AValue); end; function GetNavigationBarOffset: Single; begin if CheckBuildAndTarget(35) or IsFullScreen then Result := GetResourceHeight('navigation_bar_height') else Result := 0; end; function GetStatusBarOffset: Single; begin Result := GetResourceHeight('status_bar_height'); end; procedure TForm1.FormResize(Sender: TObject); begin if CheckBuildAndTarget(35) then begin Padding.Top := GetStatusBarOffset; if Screen.Width < Screen.Height then Padding.Bottom := GetNavigationBarOffset else Padding.Bottom := 0; end; end;
×