-
Content Count
2857 -
Joined
-
Last visited
-
Days Won
101
Everything posted by dummzeuch
-
Double-dabble to convert binary to decimal
dummzeuch replied to Darian Miller's topic in Tips / Blogs / Tutorials / Videos
Hm, I always convert to hex as an intermediary step (and actually prefer hex constants in source code). and I can still do binary to hex and back in my head, back from the C64 times. -
Localization inquery
dummzeuch replied to Clément's topic in Algorithms, Data Structures and Class Design
I have done that with dxgettext, so, yes, it can be done. But beware that dxgettext does not support translating FMX forms out of the box, only VCL. As for the translation tool, I prefer Gorm over PoEdit, mostly because it's written in Delphi and I have got the source code and write access to the repository, so I can adapt and extend it (and have done that). -
Com0Com works for me (on Windows XP and 8.1 (haven't tested Windows 7 or 10), or simply a serial null modem cable that connects two serial ports, native or USB serial adapters.
-
Ouch, that sucks. Of course, now telling you you should have made backups doesn't really help. 😉 On the other hand, I have only recently started to make frequent backups of my private computer, which does not include the Delphi installations though, just the ISOs, my personal documents and photos and the source code that isn't in public repositories anyway. So It could happen to me too and I don't know whether I will bother to install many of the old Delphi versions I currently have. Speaking about having no compiler(s): I would be able and willing to do compile tests for Delphi 5 to 10.4 for Indy if you want. But that would need some working compile batch files (the current ones for at least Delphi 2007 are broken).
-
Local string variable value is not assigned for 2nd and following calls
dummzeuch replied to ertank's topic in RTL and Delphi Object Pascal
Using a code formatter might also have highlighted this mistake. Just saying... -
OK, what it boils down to is this: It's a legacy from before Delphi 6 when the LIBSUFFIX feature was introduced. And it took even longer before it was widely used. You are the only developer left, as as happened many Delphi open source projects, and there are just too many things that compete about your time. Other libraries have ignored this too (I specifically mentioned in my blog post that TeeChart does that too, but of course there is also the jcl and jvcl.) It's planned for Indy11. I hereby apologize for using the word "sloppy" in my blog post. I had just spent several hours trying to figure out what the problem was and was quite a bit frustrated. What I don't understand is this: Why should you care whether Embarcadero "is open" to such a breaking change? They are the ones who profit from your work, not the other way around. On the contrary, I would expect them to provide you with some help here. (But my guess is that they only want to make the library work with the latest Delphi version and would love to to drop compatibility to older versions. This has happened to other libraries too.)
-
I have just uploaded a beta version of GExperts 1.3.12 for Delphi 10.3 Rio. NOTE: This is a BETA! Beware of bugs, e.g. the Goto-Dialog enhancements cause redraw problems if theming is enabled, the Run Parameters dialog enhancements (drag and drop for files and directories) don’t work at all. https://blog.dummzeuch.de/2018/11/25/gexperts-1-3-12-beta-for-delphi-10-3-rio-available/
-
GExperts 1.3.12 beta for Delphi 10.3 Rio available
dummzeuch replied to dummzeuch's topic in GExperts
Also fixed the problem reported by David Hoyle by hooking the popup menu's OnPopup event. Apparently every other plugin has done the same by now, if only I had googled for "ecSwapCppHdrFiles" before reinventing the wheel. 😞 But my solution is better: It does not add entries for the breakpoints popup menu. 🙂 -
SpeedButtons have the drawback that you can't select and press them with the keyboard. I wrote a hack for simulating SpeedButtons with BitButtons which gets around this limitation. But on the other hand, if you have a keyboard, you could simply press the appropriate key rather than fiddling with the mouse....
-
Bug and possible fix for GExperts Filter Exceptions expert – testers needed
dummzeuch posted a topic in GExperts
Mahdi Safsafi has proposed a fix for the bug in the GExperts Filter Exceptions expert, which occurs when developing for non Windows targets (first reported on Embarcadero’s quality portal ). I have implemented this fix and it doesn’t have any adverse effects on for Windows targets. But neither he nor I can test it for non Windows targets since we don’t develop for these. That means we need testers. If you want to help, please post a comment here or to the bug report, or contact me via private message. -
How to operate a private field in other unit?
dummzeuch replied to pcplayer99's topic in RTL and Delphi Object Pascal
As I wrote above: So, depending on your Delphi version this may still work, but it won't in the later version(s). -
A fix, or rather workaround was to set the main panel's visibility to False and then True again in the FormShow event. fixed in revision #3312 At least I hope so.
-
Heureka, I finally managed to see this effect on my own computer, and even managed to reproduce it reliably (at least 3 times in a row): Steps: undock the Grep Results window and save the desktop do some Grep search (may not be necessary) Open a different project (the Grep Results window disappears) Open the Grep Results Window -> It's empty, just as described When I dock and undock it, the content comes back. After that I can not reproduce it until I restart the IDE. Then the steps detailed above reproduce the effect. No I idea yet, what causes this, but now I should be able to debug it.
-
How to operate a private field in other unit?
dummzeuch replied to pcplayer99's topic in RTL and Delphi Object Pascal
You cannot access private fields of a class declared in a different unit. [Period] That is, if you play by the rules. There are various ways to still achieve that, but each of them relies on either some compiler quirk (e.g. class helpers could access private fields in some Delphi versions, but that loophole has been closed) or directly use the knowledge about the memory layout of the original class. The latter is done either with pointer arithmetic or by declaring a new class with the same fields and hard typecasting an instance to that class, which then allows accessing the private fields. Of course that would mean this class or pointer arithmetic must be adapted to every change that Embarcadero makes to the original, so the memory layout matches. -
Unit scope names in IDE - possible 2+ lines?
dummzeuch replied to Mike Torrettinni's topic in General Help
Up to Delphi 7 it was easily possible to switch the editor tabs to multline, but with the "new" IDE there is no simple way to achieve that and nobody has yet thought of a complex way and implemented it. It would probably be possible to hack the edit window and insert a TTabSet, if one were so inclined, but I think Ctrl+F12 is much more useful than multiline tabs. -
Hm, the use of LockWindowUpdate is strongly discouraged by Microsoft: Some gotchas of LockWindowUpdate: What does LockWindowUpdate do? And even worse, this describes exactly your use case: With what operations is LockWindowUpdate not meant to be used? Some remarks on WM_SETREDRAW here: The Unfortunate Effect of WM_SETREDRAW No idea whether these still apply, the blog post is from 2011.
-
If you overwrite the DLL when building it, you don't need to register it, the IDE will load the new DLL the next time it starts. If you build it to a different directory, you can still copy/move it and overwrite the original one, which again won't require a new registration. Only if you want to use the new DLL in a different directory, you will need to unregister the old one(!) and register the new one.
-
None at all. I don't expect anybody to put any effort into whatever, unless they are really interested. I have been proved right with that many times. I have spent lots of time trying to write good documentation, comments or bug reports. Some people do read it, but many simply don't and start asking questions that have already been answered. So why bother writing it?
-
If you start from scratch, consider using DeepL. Their translations are usually much better than Google or Microsoft. I don't know about their API though, I only ever used the web interface.
-
Blocking the Windows Screen Saver in Delphi
dummzeuch posted a topic in Tips / Blogs / Tutorials / Videos
Sometimes your program needs to block the screen saver from automatically kicking in. My use case was that the program was recording data and whenever the screen saver was active, the data was lost (No idea why, it probably had something to do with the way HID is implemented in Windows.) So I was looking for a way to fix that without forcing the user to turn off the screen saver. The methods that used to work under Windows XP no longer work in Windows 7 and later (I don’t care about Vista), so I googled and found this question on StackOverflow. The Windows API functions PowerCreateRequest + PowerSetRequest mentioned in the highest voted answer looked promising. Unfortunately they don’t seem bo be available in Delphi read on in my blog post -
Thanks, this could solve the problem, but as I said: I cannot test it. I need some volunteers to test this. Any takers? It's just a matter of creating a simple Android, Linux, OSX or IOS application respectively that raises an exception and see what happens. If Mahdi's fix works this will simply display the filter exception dialog, if not, it will crash the IDE. That's simple to distinguish. 😉 I just tried to create a simple Android app to run in the emulator, only to discover that apparently the emulator is no longer supported for debugging. So, that leaves me with trying to install all the stuff necessary to debug on a real device or not give a damn.
-
That's Bubble Sort you are using, which is not renowned for speed but mostly for the funny name. Maybe it would help to use something faster?
-
I would agree, if this were a commercial library. But this is an open source project, apparently maintained by a single person. You can, of course, expect what you want, but nobody is obliged to care. You should have formulated it as a suggestion rather than a demand. Writing documentation is usually less fun than coding and requires a different skill set, so most programmers expect to be paid for it as a compensation. In open source projects there usually is nobody who can pay them, so the documentation is lacking.
-
I think this is what you are looking for: https://stackoverflow.com/questions/7649812/get-set-sub-properties-ussing-rtti
-
Have a look at the code in "IDE PlugIn\Colorizer.Hooks.IDE.pas", "IDE PlugIn\Colorizer.Hooks.pas" and "IDE PlugIn\Colorizer.Wrappers.pas". These seem to be the places where the plugin hooks into the TGradientTabSet code of the IDE. I just grepped for "TGradientTabSet", I didn't try to understand any of the code, so don't ask me how it works, I don't know.