Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Fr0sT.Brutal last won the day on July 12

Fr0sT.Brutal had the most liked content!

Community Reputation

420 Excellent


Technical Information

  • Delphi-Version
    Delphi XE2

Recent Profile Visitors

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

  1. Fr0sT.Brutal

    For loop does NOT go to the max

    Ranges of for loop counter are calculated once loop starts and won't change later. You'll either have to add another for loop inside or use another kind of loop (while, until + manual counter check and increment)
  2. Fr0sT.Brutal

    How to get the actual UTC time??

    What makes you think timezone plays a role here?
  3. Fr0sT.Brutal

    How to get the actual UTC time??

    This proves once again my position: don't mess with local time wherever possible 🙂
  4. Fr0sT.Brutal

    How to get the actual UTC time??

    NTP retrieves base time and has nothing to do with timezones. As general advice, it's wise to get rid of local timestamps everywhere but user display and use GMT (that is, 0 timezone; it's also frequently referred to as UTC but they're a bit different; nevertheless, in most cases they could be considered identical)
  5. Fr0sT.Brutal

    JCL support for Linux64 compiler

    Then it will be wise to address the code they're actually using. Nevertheless, don't hesitate taking some things from current RTL (as Linux appeared in 10.x, no need in dragging 20-year-old legacy and bothering about compatibility).
  6. Fr0sT.Brutal

    Parsing Text search expression

    Just don't forget to foresee cases when someone would wish to search for "or" (as a word) 🙂 Minimalistic free-form searches are cool (imagine if Google required us to write "word='foo' or word='bar" instead of "foo bar") but slightly more complex to implement with all edge cases. That's why Google uses specific symbols for logical operations
  7. Fr0sT.Brutal

    multi-threading question

    No need in pool or something extra. Just create new threads, set their OnTerminate event and increase counter. In OnTerminate handler do what you need for single thread finish, decrease counter and when it reaches do overall finish.
  8. Fr0sT.Brutal

    JCL support for Linux64 compiler

    I too always paid great respect to Jedi team for such a huge code base but the lib is so monolithic that I've never used it except for some little inspirations and, of course, great header translations. Probably JVCL could make me take this move but times when I played with thousands of visual components are gone, now I'm happy with only std ones & VTV. I know plenty of people that tend to say "What, Jedi? These millions of units and stuff? Oh, forget it, I'd better write that function myself".
  9. Fr0sT.Brutal

    Parsing Text search expression

    Then SQL parsers won't help you much or you'll have to manually mix what they consider variables and string literals into one category.
  10. Quite rude David, he's doing opensource
  11. #3. Auto-close (and auto-reopen too) is not obvious and may lead to unpredictable cases.
  12. Fr0sT.Brutal

    Parsing Text search expression

    There are plenty of open-source parsers available. - ZeosDBO has powerful engine in \src\core\ (units ZExpression.pas, ZExprParser.pas, ZExprToken.pas, ZTokenizer.pas), you could take any part of it and customize to your needs - IBExpress from std lib has RAD\source\IBX\IBX.IBScript.pas with the parser as well, just as FireDAC in RAD\source\data\firedac\FireDAC.Stan.Expr.pas for expressions and FireDAC.Comp.Script.pas for scripts - Template engine from DVDChief also has expression parser - and so on Moreover, with such simple tokens you can easily write it yourself Btw, I don't realize what "testing" and "text" are in your example. Variables? Or just single words to search for, with quotes removed for simplicity (a la Google)? That's a nice task to solve, huh. Depending on maximum nesting level allowed it could require some discrete maths.
  13. The abyss of Dark patterns awaits you
  14. Antiviruses will be happy to thrill upon such apps 😉
  15. No surprise that speed is the same... #1 and #2 are virtually the same, and they have one bitwise operation+one if+jump. #3 is just read from address. I always prefer #3 because compiler will control if number of elements change. Sometimes, if needed, I use combined #3&#2 approach (array[TEnum] = (cS1, cS2...)).