Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 05/10/19 in all areas

  1. John Kouraklis

    OrangeUI

    It is unfair to judge the website based on our western standards... It is a matter of the markets they grow in. You can, also, see the difference in their demos which feel like a huge spam and p*rn campaign. But this format is so common in China and Japan. The components are amazing though...lot's of features and they work very smoothly in Android. Haven't tried in iOS Any comments about the components?
  2. Attila Kovacs

    OrangeUI

    Well, Alipay has about 1 billion users, "these" people pay _everywhere_, even at a grocery with their phone by scanning an Alipay QR code. They need nothing. Do you need something?
  3. A.M. Hoornweg

    DPI-change, crashes tDrawgrid.

    Done, https://quality.embarcadero.com/browse/RSP-24430
  4. Edwin Yip

    OrangeUI

    Just to be clear, it's an extension library for FireMonkey, but not a replacement of it. Let me show you another great library also from my fellow Chinese folks, but for VCL. http://www.pngui.com/screenshot Check the screenshot, it's very nice, especially at the time (quite few years ago) when it was introduced. The website doesn't even have a buy page linking from the homepage, I don't know why. They don't try to ignore the non-Chinese market but I guess they don't have the necessary English skill level. I've seen so many excellent projects written in Delphi only available in China. PS, Just in case anyone needs some help in communicating with the vendor, let me know.
  5. Good job Thomas! I can't believe this package is not very popular, it makes it so easy to make a component visually!
  6. Lars Fosdal

    Initialize local variables at declaration

    They would be uninitialized per iteration. Ref. AllocMsg - what can I say other than old habits die hard 😛 TPQ and ArtSum are regular objects retrieved from global shared pools and life cycle management happens elsewhere.
  7. Andrea Raimondi

    OrangeUI

    Look, I am all for commercial components where it makes sense, but these people... just no. They need to get a proper website, proper payment providers, etc. What the heck is that? No, no, no, please encourage these people to do the right thing.
  8. Markus Kinzler

    The Android 64bit deadline warnings have started

    If everyone will do this than delphi will be history immediately.
  9. https://refactoring.guru/replace-constructor-with-factory-method However I would go a step further and use delegates where you stick that implementation into. Example: You have Cat and Dog class that both derive from Animal - now because Func<T> is covariant you can write this: Func<Animal> makeAnimal = () => new Dog(); Or you can make some function that creates these Func<T> for you - then you can write: var makeCat = MakeFactory<Cat>(); // this is basically like the place in Delphi code where you would assign the TCat class to a TAnimalClass variable makeAnimal = makeCat; // again - covariant - a function returning a cat can be assigned to a func returning an animal var cat = makeAnimal(); // cat will be of type Animal though because that is the return type of makeAnimal - but that is the same for Delphi meta classes Or just use DI 😉
  10. Uwe Raabe

    Linux Support on Pro Edition

    @Attila Kovacs Lucky guy! All those things you rate valuable to pay for you now get for free. Much better than getting some gimmick for free that you never asked for and probably has no value for your either.
  11. Esteban Pacheco

    OrangeUI

    Wow interesting. Thank you for the link and thanks to google for offering translations.
  12. A.M. Hoornweg

    DPI-change, crashes tDrawgrid.

    I have found the core of the issue. When a form receives a wm_dpichanged message, TCustomForm.WMDpiChanged is called which scales all components on the form. But TCustomGrid does it in a terrible way; there's this simple loop that modifies the heights of the rows: [vcl.grids, TCustomGrid.ChangeScale(), line 1735] for I := 0 to RowCount -1 do RowHeights := MulDiv(RowHeights, M, D); and in the debugger I see that this loop needs a whopping 72 seconds to complete on my Core i7 notebook (for 86400 rows). The reason? It appears that the changing of a single row height triggers an InvalidateGrid() plus an update of the scroll bars (which, incidentally, is why my breakpoints kept landing in USER32.SetScrollInfo). And all of this happens inside the handling of a wm_dpichanged message, so the message queue is blocked for ages which freezes my desktop.
  13. Remy Lebeau

    DynArraySetLength exception

    Yes, exactly. It needs a write lock, not a read lock. Yes, you are wrong. A read lock allows multiple threads to read shared data at the same time. A write lock allows only 1 thread at a time to modify shared data. Since you are modifying data (adding a new string to the TStringList, thus modifying its internal memory array and its Count), you need a write lock. You are getting an AV because your read lock is allowing multiple threads to modify the TStringList at the same time, trampling on each other's toes, so to speak.
  14. David Heffernan

    Initialize local variables at declaration

    Herd immunity springs to mind
  15. Stefan Glienke

    Initialize local variables at declaration

    IDE tooling does not work properly and some of it completely stops, Also inline variables of a managed type are not always properly initialized. As much as I like this feature syntax wise - I would stay away from it for now 😞
×