Jump to content

Stefan Glienke

  • Content Count

  • Joined

  • Last visited

  • Days Won


Stefan Glienke last won the day on July 30

Stefan Glienke had the most liked content!

Community Reputation

313 Excellent


Technical Information

  • Delphi-Version
    Delphi 10.1 Berlin

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. The original code in QualityToInt causes a System.LoadResString for each "case" it checks every time you call that method and System._UStrEqual for the equals check. Neither of those two methods have changed between those versions according to the diff I just did. However LoadResString calls quite a number of other functions that I did not check for changes. I would say a dictionary is pretty much overkill here for those 3 strings - it only is faster because you eliminated the (as I assume) LoadResString calls every time. Try initializing values you compare to only once instead of comparing against the resource strings. I am pretty sure that will beat the dictionary.
  2. Assuming that you don't need to use that code from C++Builder just turn off header generation.
  3. Stefan Glienke

    Spring4d and Rio

    No, but then you still have to add the library paths (as I always recommend instead of recompiling the third party sources every time with your application) - if that would be part of the IDE compile/build now that would be great! It is not outdated it is just there for Delphinus - as you can see it has the latest release (1.2.2) - since Delphinus supports External Timelines the github repo just has the files for Delphinus, the sources are then taken from bitbucket. Compiling for all supported Delphi versions is just one click instead of opening in each IDE and compiling for half a dozen platforms (this mostly applies to me when I need to make sure that none of the dozen compilers chokes on some code).
  4. Stefan Glienke

    Spring4d and Rio

    This is like asking "I made a printout of that document last year why didn't it update when some people changed the pdf" 😉 A git clone does not update itself - think of it as snapshot - you as the clone owner are responsible to keep it up to date. I think there is no point in making a clone(*) anyway unless: - you are afraid of the repo owner just deleting it (and even then the nature of git would allow everyone who has a local clone just to push it back to a new home) - you want to maintain your own modifications (either for keeping them for yourself or contributing back) (*) sorry, when I wrote clone I actually meant fork - I was assuming that you always keep a local clone up to date or at least fetch it regularly (most git ui tools do that automatically anyway) to see whats new on the origin
  5. I still don't see a way to repro this behavior on the Delphi side because both RSP entries that are referenced in the patch are C++ ones. So chance is high Andreas won't be able to repro and fix either.
  6. Stefan Glienke

    The 9 Hints in MARS

    Then submit a pull request with the necessary changes to get rid of the hints. P.S. Btw proper use of git will not overwrite your local changes fwiw
  7. How can a name collision between TTMSLoggerLogLevel.Exception and Sytem.SysUtils.Exceptions be an IDEFixPack issue? It has even been reported already: https://www.tmssoftware.com/site/forum/forum_posts.asp?TID=8402&title=enumeration-names
  8. Looks pretty much like -O0 assembly
  9. Stefan Glienke

    Strange IDE behaviour - 10.3.1 (not 10.3.2)

    Well then the issue is not only about that one but also about other toolbars because if you look carefully the rightmost button in the debug toolbar also has a different icon. What happens if you go into Customize and click Reset for those toolbars?
  10. Stefan Glienke

    Strange IDE behaviour - 10.3.1 (not 10.3.2)

    I am pretty sure it's a different layout that gets loaded and that it in fact is not the "View/Ansicht" toolbar you are pointing at in the bottom screenshot. Simply right click and check if its checked/visible
  11. Stefan Glienke

    handling predicate conditions

    Use Rust if you want that :)
  12. Stefan Glienke

    handling predicate conditions

    Not true - this ain't .NET or Java that raise an NPE as soon as you reference any member - it can very well call non virtual methods and then eventually raise some AV which you then need to decipher (everyone knows what an access violation at 0x0071f2a7: read of address 0x000000f7 means, right?)
  13. Stefan Glienke

    handling predicate conditions

    Any approach like this in Delphi would be impossible or suck (because it would need to be stringly typed) because Delphi does not have lambda expressions and generic extension methods.
  14. Stefan Glienke

    looking for design ideas for an easily editable list

    Learning about one of the most powerful and free controls the VCL has to offer - yeah what a waste of time 😜
  15. Stefan Glienke

    handling predicate conditions

    To get a sophisticated answer you need to actually describe your situation properly and not just say "invalid values" - invalid in what context? Restricting UI from entering any invalid values can go from controls that don't even allow it, show a marker that their value is wrong, not allowing clicking ok/next to showing an "following fields have invalid values..." dialog. Declaring guard clauses in code for functions and methods that restrict passing any invalid input is a different thing and in that case I would always go with exceptions of a certain kind (EInvalidArgument or similar) either handwritten or by using some guard clause helper. If the programming language allows I would push this further by restricting the parameter types to only allow what is valid and for instance use decicated domain types instead of for example type string for an IP address but a dedicated TIPAddress type.