-
Content Count
721 -
Joined
-
Last visited
-
Days Won
53
Everything posted by Vincent Parrett
-
finalbuilder FinalBuilder 8.0.0.3035 with Rad Studio 11 support released.
Vincent Parrett posted a topic in Delphi Third-Party
Hi All FinalBuilder 8.0.0.3035 with Rad Studio 11 support is now available from our website - release notes https://www.finalbuilder.com/forums/t/finalbuilder-8-0-0-3035-released/7115 Automating your Build process is simple with FinalBuilder. With FinalBuilder you don't need to edit xml, or write scripts. Visually define and debug your build scripts, then schedule them with windows scheduler, or integrate them with Continua CI, Jenkins or any other CI Server. 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 😉 -
Generics compiler Error "Incompatible Types"
Vincent Parrett replied to luebbe's topic in Algorithms, Data Structures and Class Design
Looking at my unrelsolved issues from 10.4.2 and earlier.. 12 might be optimistic 🙄 -
Anon function with undefined result yields no warning
Vincent Parrett replied to Lars Fosdal's topic in RTL and Delphi Object Pascal
And another 5 for it to actually work properly. -
We use DUnitX and it discovers all our silly mistakes before release
Vincent Parrett replied to Lars Fosdal's topic in DUnitX
If only this were actually possible.. but your customers would not be happy with your application's performance - codecoverage tools are literally debuggers that put a breakpoint on ever line of code and record when the breakpoint is hit - it slows things down dramatically. So only really practical to use it against unit tests. Our unit tests for FinalBuiilder only take a few seconds to execute, but when running with code coverage it takes about 20 minutes - I tend to turn it on only when making major changes or writing new tests. -
Best way to handle memory fragmentation in 32bit applications
Vincent Parrett replied to Yaron's topic in Windows API
If you are using Delphi 7 with the default memory manager then you should look at an alternative memory manager like FastMM or NexusMM which do a much better job of reducing memory fragmentation. -
thread-safe ways to call REST APIs in parallel
Vincent Parrett replied to David Schwartz's topic in Network, Cloud and Web
This sort of task looks like something that OmniThreadLibrary would handle - but does require some study to get right (worthwhile imho). I created a wrapper over it's async/await feature that might be useful https://github.com/VSoftTechnologies/VSoft.Awaitable (depends on https://github.com/VSoftTechnologies/VSoft.CancellationToken and omnithread) An extremly naive example (with no queueing or thread limiting) - will probably not compile as mostly hand typed/copypasta 😉 with some details omitted for brevity. var RequestsInFlight : integer = 0; CancelTokenSource : ICancellationTokenSource; procedure DoRequest(const cancelToken : ICancellationToken; const param1 : string) var LParam1 : string; begin LParam1 := param1; //local for capture Inc(RequestsInFlight); TAsync.Configure<string>( function (const cancelToken : ICancellationToken) : string var restclient : TWhateverclient; begin //run rest request here //check cancelToken.IsCancelled or use the cancelToken.Handle with waitformultipleobjects etc restclient := TWhateverclient.Create; try result := restclient.Execute(); finally restclient.free; end end, token); ) .OnException( procedure (const e : Exception) begin //log error end) .OnCancellation( procedure begin //clean up end) .Await( procedure (const value : string) begin Dec(RequestsInFlight); //use result - runs in the calling thread. end); end; procedure StartRequests(const cancelToken : ICancellationToken) begin //Start the requests. for i := 0 to RequestCount - do ExecuteRequest(cancelToken, RequestParams[i]); //monitor requests inflight to know when it's done. end; procedure StopRequests; begin CancelTokenSource.Cancel; end; The cancellation part requires that your rest client supports cancelling requests somehow. Hope that helps. -
Image32 - 2D graphics library (open source freeware)
Vincent Parrett replied to angusj's topic in I made this
Yes, well that can be an issue on some projects - people ask for all sorts of things, when I don't have time I'll slap a `PR Invited` label on it and then... nothing - I guess the feature wasn't that important.- 42 replies
-
- graphics
- cross-platform
-
(and 2 more)
Tagged with:
-
Image32 - 2D graphics library (open source freeware)
Vincent Parrett replied to angusj's topic in I made this
I see SF is using git now.. that's a plus - but that site hurts my eyes with a bunch of other irrelevant rubbish on each page - won't be signing up (can't remember if I ever did before)- 42 replies
-
- graphics
- cross-platform
-
(and 2 more)
Tagged with:
-
Image32 - 2D graphics library (open source freeware)
Vincent Parrett replied to angusj's topic in I made this
Wow, this looks really good - and I have a use for it - in FinalBuilder we use a very old version of ImageEn to do image manipulation (resize, rotate, flip, mirror, convert file type etc) - unfortunately ImageEn is tied to the vcl so won't run in a docker container - I'm defintely going to try this. Pity it's not hosted on Github - would make forking, pull request etc so much easier 😉- 42 replies
-
- graphics
- cross-platform
-
(and 2 more)
Tagged with:
-
Looks like this was solved on the adug forums 😃
-
I have no idea what version or commit is available from GetIt (one of my many issues with it) as I'm not involved in getting it on there. The latest version can always be found on Github - https://github.com/VSoftTechnologies/DUnitX
-
Make sure you are using the latest version of DUnitX and TestInsight.
-
Fastest Way to Read / Parse a large JSON File?
Vincent Parrett replied to Steve Maughan's topic in Algorithms, Data Structures and Class Design
The same author has another json parser library - see here https://github.com/neslib/Neslib.Json/issues/5 - I have not used it yet but plan to very soon. -
Spring4D 2.0 sneak peek - the evolution of performance
Vincent Parrett replied to Stefan Glienke's topic in Tips / Blogs / Tutorials / Videos
It's this rich api that makes Spring4D collections worthwhile. The perf hit is still worth it for this alone. In a real world application (FinalBuilder) I have not noticed any perf issues that could be attributed to the spring4d collections, but then I'm rarely enumerating huge collections - certainly in my profiling efforts there were plenty of areas to optimise, but spring4d wasn't showing up as an area of concern in the profiler (vtune). Now if only we could have non ref counted interfaces (ie no calls to add/release) and we could implement interfaces on records - best of both worlds 😉 -
OmniPascal: Auto-Implementation of methods not working
Vincent Parrett replied to Der schöne Günther's topic in Delphi Third-Party
I very much doubt embarcadero would have any interest in doing anything for freepascal - as for VSCode - they have their hands full just getting LSP to work properly for the delphi IDE (it's a work in progress right now). -
OmniPascal: Auto-Implementation of methods not working
Vincent Parrett replied to Der schöne Günther's topic in Delphi Third-Party
No idea if this is true or not, but last I heard (don't remember where I heard this) he was working for embarcadero on their LSP. -
Spring4D 2.0 sneak peek - the evolution of performance
Vincent Parrett replied to Stefan Glienke's topic in Tips / Blogs / Tutorials / Videos
A few months ago I replaced all RTL collections (apart from TStringList) with spring4d 2.0 collections and I saw noticeably smaller binaries (exe/bpl) and faster overall application performance. Spring4D collections are just so much nicer to use, being interface based is a plus for me, and the LINQ like functionality makes it really easy to do sorting, filtering, projections etc - if only Delphi had lambdas so the predicates etc were not so damned verbose! I'm extremely thankful for the work @Stefan Glienke has put into Spring4D 👍 -
Child Table in BDE shows only Last 62 records of 262
Vincent Parrett replied to Gary Mugford's topic in Databases
Can't say I've used woll2woll or the BDE in the last 20 years... but just a guess - is paging perhaps enabled somewhere, with a page size of 200? Perhaps it's just showing the last page? -
https://www.ksoftware.net/code-signing-certificates/ OV certificates for $84 per year - EV for $349 per year. Either way, be prepared to jump through hoops to prove you are who you say you are. EV's are typically issued on a dongle and are a pain. You can automate them to a degree - but not when running from a windows service (ie on a ci server) https://www.finalbuilder.com/forums/t/signtool-with-ev-certificate-fails/6535/22
-
Delphi 10.4.2 always recompiling in IDE
Vincent Parrett replied to Dave Novo's topic in Delphi IDE and APIs
Confirmed - this only happens when Classic Code Insight is enabled. -
Delphi 10.4.2 always recompiling in IDE
Vincent Parrett replied to Dave Novo's topic in Delphi IDE and APIs
That could be it, I have LSP turned off due to issues, so perhaps it's Classic insight vs LSP that determines whether it occurs? -
Delphi 10.4.2 always recompiling in IDE
Vincent Parrett replied to Dave Novo's topic in Delphi IDE and APIs
100% reproducible with a new VCL project, no IDE plugins installed. -
Delphi 10.4.2 always recompiling in IDE
Vincent Parrett replied to Dave Novo's topic in Delphi IDE and APIs
When I saw this post it triggered something that has been bugging me for a while, which is how long it takes to run after I have already compiled - so I watched the exe date time and observed the change - I don't use MMX but thought perhaps it was another (or any) plugin - so I removed them (and confirmed they were gone) before testing again - it's 100% reproducible with my main project - I didn't test with a new project though. -
Delphi 10.4.2 always recompiling in IDE
Vincent Parrett replied to Dave Novo's topic in Delphi IDE and APIs
I'm seeing this issue here and I do not have mmx installed - I did a full build, waited 1 minute and then hit Run - the exe is most definitely re-linked - oddly the exe size changes each time too. I did have GExperts and your Stefan's uses helper plugin - disabling them made no difference - the exe is still regenerated every time! So this looks like an IDE issue not MMX or any other plugins. -
What integration would you like to see. Not making any promises here but it's much easier to get things right if we know what customers want rather than guessing 😉