Jasonjac2 0 Posted May 21 I have lot of marketing e-mails about the Delphi Parser product https://delphiparser.com/ that mention AI powered. I'm not bashing the product, I just wanted to know what is "AI Powered" about it. I e-mailed, but didn't get a response, so thought I would aske here. Regards, Jason Share this post Link to post
Lajos Juhász 293 Posted May 21 The product About page gives you an explanation. According to that page it is an automatized robot that can analyze and rewrite your code. In my experience that is a very bold claim. 2 Share this post Link to post
msohn 28 Posted May 21 Wow, I think my bullshit-meter just broke. Their marketing sounds like a non-technical managers dream. 4 1 Share this post Link to post
Die Holländer 45 Posted May 21 On the other hand.. what if you train a 70B model with only Delphi code? 1 Share this post Link to post
Jasonjac2 0 Posted May 21 I'll check out the about... thanks. Using templates and substitution, even with elaborate conditionals and context info doesn't make it AI to my mind and that is what it used to use to re-write code. "70B model with only Delphi code?" - I could defo google this but would love to hear what you are talking about from you. Share this post Link to post
Die Holländer 45 Posted May 21 You are right. It seems the e-mails talk about AI, according to the first poster, but on the site I only see "Machine Learning" mentioned. I was just wondering how a model trained specific with Delphi code will perform compared with general models like OpenAI, Microsoft or Google. Share this post Link to post
dummzeuch 1506 Posted May 21 58 minutes ago, Die Holländer said: You are right. It seems the e-mails talk about AI, according to the first poster, but on the site I only see "Machine Learning" mentioned. I was just wondering how a model trained specific with Delphi code will perform compared with general models like OpenAI, Microsoft or Google. Machine Learning is a category of AI. LLM is a different category of AI. Share this post Link to post
corneliusdavid 214 Posted May 23 On 5/21/2024 at 2:53 AM, Jasonjac2 said: I just wanted to know what is "AI Powered" about it. There is nothing AI Powered about it; he's just trying to utilize the current hype. The product has not changed in at least four years--except to be recompiled to support newer versions of Delphi. It's just a parser that replaces components and units according to a script. Share this post Link to post
Anders Melander 1794 Posted May 23 The amount of meme-worthy bullshit he's managed to squeeze into that site is actually quite impressive; There's layers upon layers of it. You can almost hear the feedback loop caused by believing your own marketing. Share this post Link to post
Jasonjac2 0 Posted May 23 Oh dear, I didn't mean to start a flame 🙂 Just get to the bottom of it. Actually, has anyone used the product and is it actually any good (AI or No AI)? Share this post Link to post
Lajos Juhász 293 Posted May 23 I've never tried this product. In my experience it still requires a human developer to find bugs. All the find & replace changes to migrate between versions can be achieved using the refind utility. Share this post Link to post
corneliusdavid 214 Posted May 23 1 hour ago, Jasonjac2 said: Actually, has anyone used the product and is it actually any good (AI or No AI)? Yes, I have used the UniGUI Migration tool on a fairly small (~40k lines) Delphi XE project. It's supposed to take a VCL program and replace all the components with their UniGUI equivalents so that you can turn your Windows-only program into one that runs through the web. As most typical applications, I use a few third-party components like DevExpress Quantumn Grid, Raize Controls, and some spell-check components. I figured I'd either lose functionality or have to find replacements for a few but was surprised that the migration tool does not support ANY third-party controls; in fact, it doesn't even support all the VCL ones. It doesn't know how to translate TLabeledEdit, TNotebook, TGridPanel, TBalloonHint, TBevel, TDBRichEdit, TDropDownButton, or (a big one for me in this particular project) TCategoryButtons. Many of these I could modify the script to add direct replacements but something like TLabeledEdit that needs both a TLabel and a TEdit, you have to do manually (separate into two VCL components in the original code before migrating). Things like TBalloonHint just get deleted as the functionality on a web app is different. Also, none of the dialog components (TOpenDialog, TSaveDialog, TTaskDialog, TPrinterSetupDialog) are supported. For most of the RaizeControls, I easily found the UniGUI replacements in the script for the VCL equivalents and added these to the list but I wish support for some of the more popular component sets could've been added to the standard script. If a control is not found, it's just skipped so it wouldn't hurt to have lots of third-party controls listed in there. The user interface is clunky--no settings are remembered between sessions, you have to hunt for the project file every time and once it's finished processing, the only option is to close the program. After running a migration and loading a converted project, I would make some changes to the script and have to restart the program, re-select the project file, and hit Next a few times in order to run the migration again; a minor irritation, I suppose, but for something that will be run multiple times until it looks right, having to restart and go through this whole series of steps instead of just clicking re-run or something was annoying. However, it does do a lot of the migration work for you, copying your project to a separate directory and making all the project and unit changes to produce a UniGUI project. I never did finish migrating my project to UniGUI because I was doing this on my own time and got busy with other stuff--but I still might come back to it some day and try to finish it. 2 Share this post Link to post
Jim McKeeth 106 Posted June 5 I know the reFind utility by Embarcadero has a narrower focus on just FireDAC migrations, but that is something else Delphi Parser does too. I'm curious if with a little work reFind could accomplish a lot of the other functionality as Delphi Parser. Quote reFind is a command-line utility for search and replacement of Perl RegEx text patterns in a text file. For instructions on using reFind to migrate: Existing AnyDAC applications to FireDAC, see Migrating AnyDAC Applications to FireDAC. Existing BDE applications to FireDAC, see Migrating BDE Applications to FireDAC. Existing dbExpress applications to FireDAC, see Migrating dbExpress Applications to FireDAC. Existing dbGo applications to FireDAC, see Migrating dbGo Applications to FireDac. 1 Share this post Link to post
Lajos Juhász 293 Posted June 5 Refind is quite capable to help to migrate other components not only FireDAC. 1 Share this post Link to post
corneliusdavid 214 Posted June 5 6 hours ago, Jim McKeeth said: I know the reFind utility by Embarcadero has a narrower focus on just FireDAC migrations, but that is something else Delphi Parser does too. I'm curious if with a little work reFind could accomplish a lot of the other functionality as Delphi Parser I had heard of this utility once before but failed to follow up and read about it--then promptly forgot about it. This looks very promising to solve a major migration effort at my job! Share this post Link to post
corneliusdavid 214 Posted June 10 On 6/5/2024 at 1:08 AM, Lajos Juhász said: Refind is quite capable to help to migrate other components not only FireDAC. I spent a bunch of time with this tool last week and am developing a big script for our use. One of the clunky steps in our migration process is converting a TPanel with TSpeedButtons to a TRzToolbar with TRzToolButtons. The original instructions had us manually editing a descendant form's DFM outside of Delphi before opening the project because of all the errors we'd get otherwise. Now, ReFind modifies the DFM and PAS file for us smoothing that process significantly. This, along with several other unit and method signature changes, the migration process will likely be reduced by several days or even weeks! Comparing with my experience using DelphiParser, there are still a few things things DelphiParser can do, like adding a new unit to the uses clause, which, as an action by itself, reFind cannot--it can replace an identifier and add to the uses section that way but there is not just a stand-alone unit addition command in reFind. DelphiParser seems to actually understands the Delphi syntax better and work with different unit sections and objects and variables whereas reFind is mostly a line-by-line string replacer. I'm over-generalizing and there's a lot of overlap but the reFind tool, being free and command-line based is much more accessible and easier to use. Thanks again, @Jim McKeeth for reminding me of this tool. 1 Share this post Link to post
David Heffernan 2347 Posted June 10 On 6/5/2024 at 8:36 AM, Jim McKeeth said: I know the reFind utility by Embarcadero has a narrower focus on just FireDAC migrations, but that is something else Delphi Parser does too. I'm curious if with a little work reFind could accomplish a lot of the other functionality as Delphi Parser. Isn't this just grep? Share this post Link to post
corneliusdavid 214 Posted June 10 4 minutes ago, David Heffernan said: Isn't this just grep? grep is just search; reFind is search and replace. Share this post Link to post
Uwe Raabe 2058 Posted June 10 1 hour ago, corneliusdavid said: grep is just search; reFind is search and replace. and a bit more sophisticated: reFind.exe, the Search and Replace Utility Using Perl RegEx Expressions Share this post Link to post
corneliusdavid 214 Posted June 10 6 minutes ago, Uwe Raabe said: and a bit more sophisticated True but it's more than just RegEx--Grep also uses RegEx expressions. reFind has some Pascal smarts in it; for example, when using #migrate to change a class and identifier in your code, it can add the new required units to the uses clause. Share this post Link to post
Uwe Raabe 2058 Posted June 11 8 hours ago, corneliusdavid said: reFind has some Pascal smarts in it; for example, when using #migrate to change a class and identifier in your code, it can add the new required units to the uses clause. That's what I was actually poining to. Share this post Link to post