Leaderboard
Popular Content
Showing content with the highest reputation on 05/10/19 in Posts
-
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?
-
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?
-
Done, https://quality.embarcadero.com/browse/RSP-24430
-
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.
-
Delphi Custom Container Pack updated for Delphi 10.3 Rio
Edwin Yip replied to dummzeuch's topic in Tips / Blogs / Tutorials / Videos
Good job Thomas! I can't believe this package is not very popular, it makes it so easy to make a component visually! -
Initialize local variables at declaration
Lars Fosdal replied to PeterPanettone's topic in Delphi IDE and APIs
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. -
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.
-
The Android 64bit deadline warnings have started
Markus Kinzler replied to Yaron's topic in Cross-platform
If everyone will do this than delphi will be history immediately. -
C# offtopic: Class of TSomeClass - Alternatives?
Stefan Glienke replied to Lars Fosdal's topic in RTL and Delphi Object Pascal
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 😉 -
@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.
-
Wow interesting. Thank you for the link and thanks to google for offering translations.
-
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.
-
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.
-
Is there already a statistic about the new registrations?
Markus Kinzler replied to sh17's topic in Community Management
-
Initialize local variables at declaration
David Heffernan replied to PeterPanettone's topic in Delphi IDE and APIs
Herd immunity springs to mind -
Initialize local variables at declaration
Stefan Glienke replied to PeterPanettone's topic in Delphi IDE and APIs
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 😞