-
Content Count
583 -
Joined
-
Last visited
-
Days Won
14
Everything posted by Darian Miller
-
This seems much more responsive today than in the past: https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Main_Page I assume this is on new hardware. I'd call that progress.
-
Systemic failing of Embarcadero development and support or am I just paranoid ?
Darian Miller replied to CyberPeter's topic in General Help
They have a roadmap and have been updating it about once/year. Here's the info I've collected on it: https://github.com/ideasawakened/DelphiKB/wiki/Future-Releases-for-RAD-Studio-and-Delphi Marco covered the roadmap in the last DelphiCon. -
There are multiple issues with inline variables... I provided a partial list. It does work in some cases.
-
Inline variables were introduced with 10.3 back in 2018 and the tooling has not been updated yet to properly support them. I currently lump them in with GOTO and WITH statements. From my style guide: Do not utilize inline variables (first introduced in 10.3 in November 2018) until the tooling catches up. Some examples include: RSP-32507 Inline variable breaks the Methods drop-down box in Navigation Toolbar RSP-33176 Extract method refactoring broken by inline var definition RSP-33365 In-block variables break the "Find references" RSP-23096 Incorrect debugger values RSP-22089 Code Formatter Fails on Inline Vars See note from Marco on RSP-28948: May 14, 2020 The formatter is not related with CodeInsight and LSP and is an area we plan addressing next. GExperts is the way to go for now. It would be great to use the built-in formatter and then most of arguments/variances on formatting could be solved by using a shared formatter config file. (You don't argue, you simply hit CTRL-D, or do it automatically before check-in with the command line tool.)
-
Wow, very nice! Much appreciated!
-
Delphi 6 all of a sudden wants to be activated
Darian Miller replied to dummzeuch's topic in Delphi IDE and APIs
LOL. I have kept up this VM for a while and no apparitions just yet. I actually want to install DOS Box and put the TurboPascal versions on there but haven't gotten around to it. It does come in handy when trying to figure out what version some method/feature was added to Delphi. I recently created a new repo and added every \Source folder but there are a number of file moves which makes version control history a bit difficult. -
Delphi 6 all of a sudden wants to be activated
Darian Miller replied to dummzeuch's topic in Delphi IDE and APIs
Weekend project - update my "All Versions" VM for the last couple releases. One VM and all versions working again after a brief unexplained Delphi 6 license hiccup.. Removed a few excess VMs so I can have one old-version VM and one that I use daily with the latest-release. -
Delphi 6 all of a sudden wants to be activated
Darian Miller replied to dummzeuch's topic in Delphi IDE and APIs
And of course... after a few attempts at twiddling the registry, it works. Not sure what fixed it.. -
Delphi 6 all of a sudden wants to be activated
Darian Miller replied to dummzeuch's topic in Delphi IDE and APIs
Same thing has happened to me... unfortunately no apparent work around. Tried the suggestion from @pmos -
BestPractices: To raise, or not to raise ... an Exception in a class constructor
Darian Miller replied to Rollo62's topic in Algorithms, Data Structures and Class Design
Also consider passing items into a constructor rather than creating items within it to increase testability. -
List of most popular UI components for VCL
Darian Miller replied to Jaska's topic in Delphi Third-Party
Few more https://www.lmdinnovative.com/ http://www.bergsoft.net/en-us/products ReportBuilder, Fast Report, List & Label -
I have a section "Some reported new version issues" with RAD Studio 11 on my wiki that you could review: https://github.com/ideasawakened/DelphiKB/wiki/D28.ALEXANDRIA.11.0.0.0 It doesn't list all the issues, feel free to add yours if it's missing. I would recommend that you start the process and prepare your application for upgrade but don't perform the upgrade until it passes your testing. There was a patch released a month after RS11 was released, and another cumulative patch a month later. I would guess/hope that we will see another patch soon. Here's a link to a Quality Portal dashboard listing top active issues over the last few months. It would be another resource to review: https://quality.embarcadero.com/secure/Dashboard.jspa?selectPageId=14502
-
Marco covered the current roadmap is his KeyNote for DelphiCon 2021: https://blog.marcocantu.com/blog/2021-november-delphicon2021-keynote-replay.html Here's a DelphiCon talk on developing apps with Raspberry Pi with Delphi 11. https://delphicon.embarcadero.com/talks/developing-applications-for-the-raspberry-pi-with-delphi-11/ Here's a roadmap page from my wiki: https://github.com/ideasawakened/DelphiKB/wiki/Future-Releases-for-RAD-Studio-and-Delphi
-
Thoughts on using begin end merely to limit inline var scope.
Darian Miller replied to MarkShark's topic in RTL and Delphi Object Pascal
Until the tooling catches up, I wouldn't recommend inline variables. Refactoring can break, code formatting breaks, debugger gets confused... I really jumped into inline var usage and quickly hit a wall. Now they are banned from my code. -
I just started using Stefan's TestInsight tool and it's pretty cool. Blog post up tonight: https://www.ideasawakened.com/post/radauthenticator-part-3-upgrade-unit-testing-in-delphi-with-testinsight
-
Blog post on one-time password generation
Darian Miller posted a topic in Tips / Blogs / Tutorials / Videos
New blog post on one-time password generation in Delphi (TOTP standard). Second in a blog post series to create a Google Authenticator style multi-platform app in Delphi. https://www.ideasawakened.com/post/radauthenticator-part-2-generate-one-time-password-tokens-in-delphi-using-totp -
There are a number of uses for Unit Testing. Purists have their specific definitions, but it's a tool just like any other. You choose how to use it. Now, a hammer has some specific purposes like pounding in nails but you could use a hammer for quite a few more useful things. My advice is to start small - think of unit tests as simple stop/go signs for your code. Set a bare minimum functionality for each test. Then think about what possible abnormal inputs might occur and test for a few of those. Over time you'll end up with a large number of tests that add value to your operation. They will guard against you releasing some bugs that you might not have caught before. Once you start feeling comfortable with tests, then other uses arise. Like you start taking a little more risk - as you rely on your tests to keep you on the right path. Once you can take more risks, you could potentially make larger leaps forward in functionality. It's a self-feeding positive cycle. But in the beginning, add a single test and watch it fail. Your skill level went up +1. Now make that one test work and and then watch the test pass. Skill level +1. Write a little code and add another test... eventually write the test before the code is written (I don't do this often but when I have it has saved some time.)
-
RAD Studio 11 Alexandria Patch 1 Available
Darian Miller replied to Uwe Raabe's topic in Tips / Blogs / Tutorials / Videos
They used to have a "Premium" subscription option which included prior version support always with the caveat "some limitation apply." I believe they did provide a backport for a couple of fixes but that was years back. They have changed their support agreements since then to remove that line. But, the option is still listed online this older page: https://support.embarcadero.com/annual Update Subscription (RAD Studio, Delphi, C++Builder) The base level annual agreement for Update Subscription. Service features are: Features and benefits are listed here https://www.embarcadero.com/support One support contact per covered Embarcadero Product License Three (3) incidents annually per covered Embarcadero Product License (Excludes Starter and Academic licenses) Access to all product updates and upgrades released during the term of the agreement Product updates and upgrades delivered by electronic transfer Phone access to the Embarcadero Support Center during regional business hours Access to the Embarcadero online knowledgebase Online support incident submittal and tracking; full access to Embarcadero Support Online The support element of the service is provided until the predefined number of incidents has been used or 12 months have elapsed, whichever comes first. The maintenance element of the service is always provided for the full 12 months. Premium The highest level annual agreement includes all of the standard service features listed above. Additional service features are: Features and benefits are listed here https://www.embarcadero.com/support Three (3) additional incidents for the covered Embarcadero Product(s) Highest priority for submitted support incidents Prior version support/updates for top issues (some limitations apply) For older references: here's a 2016 post from Google+ (exported to this blogsite) there was a comment back in 2018 which mentions 'Prior version support/updates for top issues (some limitations apply" https://delphi-developers-archive.blogspot.com/2016/08/today-was-first-time-i-heard-of.html Here's another reference from the 2016 time frame which was a brochure for Support options: https://github.com/ideasawakened/DelphiKB/blob/master/library/embarcadero_premium_subscription.pdf -
Which implementation of this is easier to understand?
Darian Miller replied to dummzeuch's topic in Algorithms, Data Structures and Class Design
Since the actions all involve FReader, I'd move the method into FReader's class instead of TBla. I think it makes it much more readable (as the general rule of thumb is - the fewer dots the better) Also changed the method name as you suggested in the thread. Bonus issues: Changed Utc.IsZero to a new Utc.IsValidTimeEntry as that logic belongs to TMeasurementTime, not this method. Depending on the nature of the Reader, you might need to save the current position and restore it afterwards with a try/finally block to squash any changed-state issues. Also changed to use a Exception class scoped to the Reader. 'Seek' seems a little oddly named method here... more like a 'Goto' or RecordNumber assignment. (Maybe add a custom enumerator and use FOR/IN and get rid of the method call) Might also make a resource string for the exception text. procedure TReaderClass.GetFirstValidTimeEntry(out _UtcValid, _TimeByUtc:TMeasurementTime); var i:Integer; Utc:TMeasurementTime; begin for i := 0 to Count - 1 do begin Seek(i); Utc := Data.Time; if not Utc.IsValidTimeEntry then begin _UtcValid := Utc; _TimeByUtc := MeasurementTime(i); Exit; end; end; raise EMyReaderException.CreateFmt('%s has no valid entry', [DataFileName]); end; -
When poking around the web, I stumbled acorss "Delphi Package Installer (DelphiPI)" on BitBucket: https://bitbucket.org/idursun/delphipi This project has commit history dating back to 2007 The latest product seems to be DPM from @Vincent Parrett (https://docs.delphipm.org/) Just from casual observation, the most used on GitHub seems to be Delphinus (https://memnarch.bplaced.net/blog/delphinus/) and Boss (https://github.com/HashLoad/boss) Another interesting one is from @pyscripter, an extension of MultiInstaller: https://github.com/pyscripter/MultiInstaller Of course, GetIt is available in later versions of RAD Studio. Now that a new release is available, thoughts invariably wander back to this painful area again, so - what do you currently use for lessening the pain of upgrades? Code is certainly in version control, but there are still some manual processes that I do which I'd rather not continue doing for the visual components.
-
NVMe drives ... SATA or PCIe? I have a PCIe... Samsung 970 EVO with 3500 MB/s Read and an older Samsung SSD 960 PRO with 2100 MB/s. These are fast, but apparently they can get twice as fast as that now. Might need to get a Christmas present to myself... 32GB of RAM should be plenty. If builds are only peaking 21% CPU then you are probably maxed out there too. You should be pretty speedy already. There are software optimizations... like Excluding your source and output folders from Antivirus.
-
Given enough RAM to dedicated to the O/S and at a few GB left over for apps, I think NVMe drives are rediculously fast and can be the best $-per-wow spent. They can read 7,000+ MB/s and write nearly as fast. They will put a pep in your step. I'm using Intel, but I see a Seagate Firecuda 530 with 7,300 MB/s sequential read and 6,900 MB/s seq. write which is enticing.
-
Are you using Delphi 11 with mainstream projects?
Darian Miller replied to Clément's topic in Delphi IDE and APIs
Refactoring remains broken with inline variables. I assume they are the probable cause of your particular failures. There are multiple issues with inline var refactoring, such as https://quality.embarcadero.com/browse/RSP-33176 I plan to stay away from using inline vars until the tooling catches up. (Also issues with debugger: https://quality.embarcadero.com/browse/RSP-23096) I've experienced some odd things in the RS11 IDE - for example, occasional structural highlighting fragments occur in the editor so I've temporarily disabled that feature as it gets too distracting. On the other hand, the IDE feels much more responsive and looks much cleaner. -
Directed Graph Layout Library for Delphi?
Darian Miller replied to Vincent Parrett's topic in Algorithms, Data Structures and Class Design
Synopse documentation builder has some of this built-in which might help... not sure how standalone it is. @Arnaud Bouchez -
https://quality.embarcadero.com/browse/RSP-28948 See note from Marco on RSP-28948: May 14, 2020 "The formatter is not related with CodeInsight and LSP and is an area we plan addressing next." The recently released RAD Studio 11 now only offers LSP for CodeInsight (classic codeinsight has been retired) so I hope that project is now considered 'done' and I would also hope that a new code formatter is on deck.