Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by Fr0sT.Brutal

  1. Fr0sT.Brutal

    compiling DCU without creating EXE

    Thanks, I didn't know that. It was opensourced so anyone could try to build it for newest versions
  2. Fr0sT.Brutal

    compiling DCU without creating EXE

    That's weird BTW - IDE seems to run compiler as standalone EXE so it should not eat memory itself. And compiler is 64-bit so it must be able to allocate as much memory as possible including swap. Just don't use them if you don't need
  3. Fr0sT.Brutal

    Delphi 10.4.2 Professional

    @Dany Marmur gentleness and diplomacy of 80 lvl! 🙂
  4. Fr0sT.Brutal

    ICS for Linux?

    Ok, I got your point. Full source files, fine
  5. Fr0sT.Brutal

    Delphi 10.4.2 Professional

    You have just insulted all otaku's down to the deep of the heart xD kawaii manga girls have nothing common with that synthetic model of a human xD
  6. Fr0sT.Brutal

    compiling DCU without creating EXE

    Very interesting. How large your project is? Regarding the subject, you could also split your bucket of units into several projects and build them one after all. Anyway, if it's possible, I'd recommend considering extracting some units into separate subprojects that will be built independently; main project would use their DCU's without rebuilding.
  7. Fr0sT.Brutal

    ICS for Linux?

    Trying to build latest "ICS V8.67 - Part 2" for Debian. Besides several "stream.Seek"'s that I fixed the most serious issue is that "kqueue" is used for message loop which is only available at *BSD. This topic recommends using epoll instead or some 3rd-party lib.
  8. Fr0sT.Brutal

    RegEx performance

    Why validate email at all? If you need it valid and active, send confirmation code. Otherwise let it go. "aa@bb.cc" is totally valid but as useless as "weufbowkef". I use this one frequently when a site that I found just now and unlikely will visit again requires my email for some unclear reasons.
  9. Fr0sT.Brutal

    Determining why Delphi App Hangs

    Doing things right is always a better option. But when it's too hard, only some ugly methods could help - but one has to understand what they're doing.
  10. This feature took them 20 years and it still has drawbacks. If they've implemented aliases from the beginning, no troubles with with would happen ever
  11. Fr0sT.Brutal

    Determining why Delphi App Hangs

    Well, it's not the App.PM's fault, it's the misuse. You just run a continuous loop which could iterate millions times per second if there's no messages in the queue. Surely it eats up CPU time and other operations get slower. What happens if you uncomment that Sleep? BTW, each additional connect you run adds one more nested loop with App.PM=>Button.OnClick=>Connect thus the call stack grows.
  12. Fr0sT.Brutal

    SetLength TBytes Memory Leak

    You already set length to 0 on decode error. BTW, there's a catch in dynamic Result regarding performance. They have their previous state when entering a function so the array could be allocated already. When you call SetLength, and if FastMM decides the array must be reallocated (as it reserves some space after the end), it copies full contents of an old array to a new one. Which is useless anyway. OTOH, disposing the old array by setting length to 0 could also slow thing down because then allocation will happen at every call. Depending on how intensive the function call is, you might want to re-use the array without truncating its length and just return how much decoded data it contains.
  13. IMHO Borland should've borrowed alias construction from SQL (select Foo as f, Bar as b ...) like this: with some.long.long.nested.object as foo do foo.bar := laz
  14. IOW, optimal distribution would be not AB CD where each letter is a fragment of an image to process by a thread but ?
  15. Fr0sT.Brutal

    StockSharp, anybody worked with this?

    Of course absolutely no. Evil Russian hackers will drain all of your bitcoins in seconds just between faking US votes and drinking vodka with their bears
  16. Ensures x64-safe typecasts in 6 units of old demos. Note: Francois' name in unit headers got damaged by Git patch generator though the commit didn't contain that change. Must be reverted manually 0001-Samples-change-unsafe-Integer-Pointer-typecasts-to-W.patch
  17. Fr0sT.Brutal

    iOS upcoming TrackingAPI in 14.5

    Only Apple has the exclusive right to track you and sell this data xD
  18. Fr0sT.Brutal

    I will be less active for a few weeks

    IDK, that's a mystery that evil KGB hides from public but most of restrictions were removed long ago, just requirement of wearing masks and gloves in public transport remain.
  19. Fr0sT.Brutal

    I will be less active for a few weeks

    Come to us, we have those vaccines at every corner 🙂
  20. Not all applications need rendering, don't forget non-visual text processing tasks. I guess these ones are more critical to support bleeding edge standards (imagine someone would strongly urgently perform full-text search among many posts written in Quenya :))
  21. Fr0sT.Brutal

    List of usable RegEx for source code

    Stefan answered better than I could. In addition, don't you do premature optimization here? In numerous cases reallocs are not an issue even in multithread apps, and really heavy multithread tasks will try avoiding allocs at all.
  22. Relying on OS facilities is simpler but they depend on updates (Unicode committee constantly adds more and more weird combos) so own ICU seems the most reliable way.
  23. Fr0sT.Brutal

    List of usable RegEx for source code

    FastMM already reserves some space after a string/array so manual reservations are unneeded where it is used. F.ex., the following test case procedure TForm1.Button2Click(Sender: TObject); var arr: array of byte; i: Integer; begin for i := 0 to 30 do SetLength(arr, length(arr)+1); end; only caused four reallocations
  24. Fr0sT.Brutal

    List of usable RegEx for source code

    There's no super-universal algo for every case. Dealing with single-threaded / several-threaded / multi-threaded and non-performance-demanding / performance-critical applications should be done via different approaches. 😉
  25. Fr0sT.Brutal

    Returning a dynamic array from DLL

    General approach is to write results to a memory allocated by caller. To handle beforehand unknown number of elements, there are options: 1 - limit a maximal number of elements and always allocate memory for this number 2 - caller allocates memory and passes number of elements he had allocated space for, function returns how much elements it had copied (if ResultCnt <= AllocatedCnt) or how much elements were skipped (if ResultCnt > AllocatedCnt) 3 - caller calls function with NULL memory, function returns how much elements it could copy, caller allocates memory and calls function again P.S. Learn WinAPI, it has pretty good approaches to interacting with DLLs. Everything I know on this subject, I took from WinAPI practice 🙂