Jump to content

Vincent Parrett

  • Content Count

  • Joined

  • Last visited

  • Days Won


Vincent Parrett last won the day on August 14

Vincent Parrett had the most liked content!

Community Reputation

167 Excellent


Technical Information

  • Delphi-Version
    Delphi XE7

Recent Profile Visitors

442 profile views
  1. Vincent Parrett

    tMainmenu, imagelist, high-dpi

    https://www.axialis.com/icons/ not cheap when you end up buying multiple sets to get what you need, but other than that there are many websites that do svg's which can be uses with this library - https://github.com/EtheaDev/SVGIconImageList
  2. Vincent Parrett

    Non Delimited string parsing (registry entries)

    This is the command line parser we use in FinalBuilder and DUnitX and the package manager I'm working on. https://github.com/VSoftTechnologies/VSoft.CommandLineParser
  3. Vincent Parrett

    On the use of Interposers

    I generally only use interposer classes to fix vcl/rtl issues where I'm using runtime packages.. and then only very carefully - generally in a file that is a folder like VclFixes and where the filename would be something like Vcl.Forms.RSP1234.pas - it's hard to miss that you are using a patch/hack and makes it easier to review when upgrading delphi versions (ie do I still need this file). The other time I have used them is when messing with the IDE and don't have the IDE source code 😉
  4. We are delighted to announce a new beta release in Continua CI. We have added the following new features: Export and Import: You can now export one or more configurations to a file and import them back from the file into Continua CI. Requeuing Stages: Requeue a failing stage without restarting the build. Multiple Daily Cleanup Rules: Each type of build by-product can now have a different shelf life. https://www.finalbuilder.com/resources/blogs/introducing-continua-ci-version-192-beta Continua CI is a low cost, easy to use Continuous Integration Server which includes first class support for Delphi (using FinalBuilder or MSBuild) and version control integration with Git, Mercurial, Subversion and more. https://www.finalbuilder.com/resources/blogs/building-delphi-projects-with-continua-ci
  5. FinalBuilder is a fully featured automated build tool, which supports Delphi 3 to 10.4, along with C++Builder 4 or later. FinalBuilder makes it simple to automate your entire build process, from compiling your Delphi and C++Builder projects to compiling and uploading installers, creating ISO's. There are over 600 built in actions, with support for Git, Mercurial, Perforce, Subversion, TFS and many other version control systems. Unlike xml or batch file based systems, with FinalBuilder you can easily debug your build process, with breakpoints, step over, step into etc. Of course FinalBuilder also integrates with Continua CI - our continuous integration server product, and with other CI servers such as Jenkins. Thousands of Software Developers rely on FinalBuilder to automate the build, test and release process. If you are not using FinalBuilder to automate your builds, you are missing out. Download a fully functional 30 day trial version today.
  6. Vincent Parrett

    Looking for SVG support in Delphi?

    Animation is not simple, I can only imagine the amount of work required to implement animation - and that's not really the intended direction for SVGIconImageList - as you can tell from the name of the library, it's about using svg with imagelists.
  7. Your helper is not going to work because what you want is a string helper (since the return value of GetAttribute is a string.
  8. Vincent Parrett

    Delphi 10.4 Debug

    Turn on Use Debug dcu's in the compiler options. This is usually enabled by default in the Debug config.
  9. Vincent Parrett

    While Not _thread.Finished Do Application.ProcessMessages;

    I wrote https://github.com/VSoftTechnologies/VSoft.Awaitable for this purpose.. in a tabbed interface where each tab invokes a background task to fetch data, but switching tabs in the middle of the request is allowed (and starting a new request, fetching a different set of data). My library is a wrapper over Omnithread Library which just makes it easier to cancel tasks and to return values. TAsync.Configure<string>( function (const cancelToken : ICancellationToken) : string var i: Integer; begin result := 'Hello ' + value; for i := 0 to 2000 do begin Sleep(1); //in loops, check the token if cancelToken.IsCancelled then exit; end; //where api's can take a handle for cancellation, use the token.handle WaitForSingleObject(cancelToken.Handle,5000); //any unhandled exceptions here will result in the on exception proc being called (if configured) //raise Exception.Create('Error Message'); end, token); ) .OnException( procedure (const e : Exception) begin //runs in main thread Label1.Caption := e.Message; end) .OnCancellation( procedure begin //runs in main thread //clean up Label1.Caption := 'Cancelled'; end) .Await( procedure (const value : string) begin //runs in main thread //use result Label1.Caption := value; end); So when the user switches tabs, or to another part of the UI, we can cancel the background task via the CancellationToken (see https://github.com/VSoftTechnologies/VSoft.CancellationToken) and start a new one. Of course being able to cancel what is happening in your thread relies on whatever you are calling being able to be cancelled or aborted. I wrote my own http client (https://github.com/VSoftTechnologies/VSoft.HttpClient) to ensure I could cancel requests. Also, CancellationTokens have a Handle that can be passed to WaitForMultipleObjects or api's that take event handles for cancellation.
  10. There's a reason this site exists https://git-man-page-generator.lokaltog.net/ 😉
  11. For those struggling with the git commandline, this is a good intro using it Also, Using windows terminal with powershell core makes it so much nicer https://www.hanselman.com/blog/HowToMakeAPrettyPromptInWindowsTerminalWithPowerlineNerdFontsCascadiaCodeWSLAndOhmyposh.aspx
  12. Vincent Parrett

    Debug Expert

    I working on a dll expert right now, and I find it useful to use a separate registry for debugging the IDE, so that it only loads my expert and not 20 other things I typically have installed. You can do this in the Run Menu, Parameters dialog, under the Host application, add -rOpenToolsApi The name after -r doesn't matter, as long as it's unique Run that once, it won't load your expert, but will create a new entry under HKEY_CURRENT_USER\Software\Embarcadero You can also use that run to remove any libraries or experts you don't need for debugging.. speeds up startup a lot. After that you can manually add your expert to the Experts key and then start debugging. This is useful for testing bpl experts too.
  13. Interesting. I haven't used Semantic Merge either, but was considering trying it for our .net code(c#), we're in the process of migrating a huge codebase to .net core and have had quite a few merge issues lately semantic merge could possibly have dealt with better. I have so many other open source projects on the go at the moment, so I will have to restrain myself from taking on another one (tempting as it is!) - I also have a day job, admittedly working for myself, but I often have to restrain myself from working on fun projects so I can earn a living!
  14. I assume you mean SemanticMerge rather than plasticscm (same company, different product)? I didn't think it had a parser for delphi? That would be a fun project, using https://github.com/RomanYankovsky/DelphiAST perhaps. We use Beyond Compare (written in Delphi, built with FinalBuilder!) - can't fault it and the price is very reasonable.
  15. It still supports older versions of windows (not sure which but I would imagine windows 7+. The work to integrate Direct2D support has not been done yet.. more refactoring required to abstract the rendering so that different svg engines can be used. @pyscripter has made some major improvements to the existing svg engine, fixing several bugs and improving performance.