Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 07/21/19 in all areas

  1. Uwe Raabe

    MMX 15 (Beta) Available

    There is a new beta available. Changing the version number to 15 resembles not only the completely different new look due to theme support and new icons, but also the internal changes necessary to make all this work. Hopefully I didn’t break too much.
  2. Daniel

    GExperts and Delphi 10.3.2

    @dummzeuch Ich have just downloaded the sourcecode and compiled the DLL. The DLL identifies itself as version 1.3.13.78, Delphi 10.3.2 is on build .6593. I cannot confirm an access violation while closing the IDE. I have just done a couple of tests, opened some projects, opened some of the experts - but no access violation.
  3. dummzeuch

    EmptyString constant

    That's the point: Why have such a constant if it's much more to type and more difficult to read than the literal? The only case I would use such a constant is to have it symbolize an empty string e.g. in a configuration storage where for whatever reason using a literal '' is not possible.
  4. David Heffernan

    EmptyString constant

    I'm not confused, but I think it's a bit pointless though. It's like having a named constant with a value of nil. Or a constant named Zero. What else could EmptyString be?
  5. pyscripter

    GExperts and Delphi 10.3.2

    I don't get the access violation with GExperts and Delphi 10.3.2. GExperts worked smoothly. But I am using GExperts 1.3.12.66 Experimental.
  6. I suspect the main reason this occurs as "smelly" is because there are so few reasons to do this kind of thing in Delphi. It's far more common in c/c++ as old-timers think it's perfectly acceptable. if you have a justifiable need to do bit-whacking like this, then I say, do it. I probably wouldn't do it for, say, a mere 5% performance gain, but 50%+ is far more justifiable. It would be nice to see some comments as to what's supposed to be going on because average Delphi coders won't make heads or tails of the code. (I personally have trouble dealing with pointers in Delphi, since I do it so seldom.) And be especially careful to point out any dependencies on assumed sizes of vars, especially integers that can vary depending on the platform. (Better yet, use explicit types that ensure fixed sizes and explain why.)
  7. In VCL, the TBitmap.Canvas must be locked while using the TBitmap in a worker thread. The RTL keeps track of all GDI resources it allocates, and the main UI thread runs a routine periodically that frees GDI resources that are not locked. Which is very bad for TBitmap used in a worker thread. The alternative is to not use TBitmap at all, just use the Win32 API directly for all GDI operations in a worker thread.
  8. If you work with a TCanvas in background threads always wrap your code in canvas.lock; try ...operate on canvas here finally canvas.unlock; end; The VCL has a build-in mechanism to optimize use of GDI objects, which is shared between all TCanvases used, and his mechanism is not thread-safe. Locking the canvas makes sure it does not use this mechanism while it is locked.
  9. dummzeuch

    quality embaradero.com is empty

    Isn't database problems the normal state there? 😉
  10. Daniel

    quality embaradero.com is empty

    Yay ... no open issues anymore! No - joke aside: They had some database-problems over the weekend and I am sure that the items will come back shortly.
  11. Your question was "Is this type of construct smelly code?" If you ever feel compelled to ask that about a specific chunk of code, then I would the assert that the obvious answer is YES.
  12. Well, have you tried Mormot's implementation? https://github.com/synopse/SynPDF/blob/master/SynCrypto.pas You can also try HashLib4Pascal if you want. https://github.com/Xor-el/HashLib4Pascal/ Also you can try out Wolfgang Ehrhardt aka Gammatester (RIP) excellent Hash libraries which contains HMAC implementations too. http://www.wolfgang-ehrhardt.de/crchash_en.html These are guaranteed to work on Delphi 2010 and above and don't require any external DLLs for as long as I remember.
  13. Uwe Raabe

    EmptyString constant

    There is even a const named Empty in TStringHelper, right accompanied by the function IsEmpty. I agree that the value of both is questionable at least.
  14. Steve Maughan

    Delphi 10.3 Update 2 available

    Apparently the new macOS Delphi compiler is based on the LLVM compiler. I wonder if future Delphi compilers for Win32 / Win64 will also be build on top of LLVM? Would this improve the speed of the final executables? Steve
  15. Markus Kinzler

    quality embaradero.com is empty

    Maybe but they just don't care about it
×