Changes between GExperts 1.3.12 and 1.3.13

 Delphi, GExperts  Comments Off on Changes between GExperts 1.3.12 and 1.3.13
Mar 312019

I had to look them up myself, so it took a while but here they are, the changes, bugfixes and improvements between the GExperts 1.3.12 (released 2018-12-22) and 1.3.13 (released yesterday, 2019-03-30):

  • Bugfix (#105): Set Tab Order expert no longer worked with Delphi 6, 7 and 2005 (Remember what I wrote about testing these versions?)
  • Improvements to the Uses Clause Manager:
    • New configuration setting “GExperts caching directory”, used to store the cached identifiers per unit
    • Additional configuration options for the expert: Caching can now be disabled and the cache can be cleared. (Bug report #104)
    • It is now possible to use the project’s map file rather than the dpr for getting a list of used units. This includes the VCL/RTL and possibly any 3rd party units and makes the Project tab much more useful.
    • Bugfix (#110): Entries in the VCL/RTL list were clipped / overlapped.
  • Bugfix (#109): When loading a form’s position only, Width and Height no longer change every time.
  • Added additional Delphi 10.2 and 10.3 warnings to the Insert Warn Directive editor expert
  • Bugfix: The number of entries for the Favourite Files expert in the registry doubled every time the list was saved.
  • Improvements to the Grep expert:
    • Hint about separating multiple directories with semicolon.
    • It can now use the project’s map file rather than the dpr for getting the list of used units. This includes all units compiled in the project not just those explicitly added to it. There is a configuration option for enabling that.
    • Ensure that the RTL and all existing subsystem Paths (VLC, FMX, CLX) are in the drop down menu.
    • Searching DFM files can now handle strings split into multiple lines and containing special characters stored as #<number>. (Note: This is not quite finished. The display in the Results window is broken.) (Bug report #112)
  • Custom beep as a WAV file for the Proof Reader expert (Suggested by Philip Rayment, Patch by Achim Kalwa, Bug report #111).
  • Bugfix (#113): Added another check for duplicate GExperts DLLs being loaded into the same IDE to prevent error message “PrivateGXMenuActionManager is not nil upon creation”
  • Project Dependency expert:
    • Dramatically improved performance for the indirect dependencies tab. The strings and string lists are no longer stored in and read from the UI. Also string lists are now sorted so look ups are much faster.
    • Units in the project (root node of the tree view are now also listed)
    • New configuration option to search for units in the library path and also in the browsing path.
  • Bugfix (#114): Disabled editor experts still blocked the associated keyboard shortcut and could be called with this shortcut.
  • Bugfix (#117): Editor experts could be executed even if not the code editor but the form editor was active.

As you can see above, I am looking into bugs reported on Sourceforge and also feature suggestions posted there. That is my preferred way of users to report bugs and request features because it is easy for me to manage them in one place. The other channels (email via the GExperts “Send a Bug Report / Suggestion” button and the GExperts subforum in the international Delphi Praxis forum) work too, but they are much less convenient for me and some reports / requests may get lost. Also, please remember that I am working on this project in my spare time, so any additional work, e.g. creating bug reports on Sourceforge from emails I receive, takes time in which I am not working on the actual software. It’s also boring work which might discourage me from doing it and if it is getting out of hand might even make me stop working on GExperts at all.

Let me close this post by thanking all those people who have worked on GExperts before me and on whose work I have been building over the years (and whose work I have also been using as a GExperts user for more than two decades as a professional software developer). And also those who continue to contribute their work and some money to this project.

Discussion about this post in the international Delphi Praxis forum.

 Posted by on 2019-03-31 at 13:56

GExperts 1.3.13 experimental twm 2019-03-30 released

 Delphi, GExperts  Comments Off on GExperts 1.3.13 experimental twm 2019-03-30 released
Mar 302019

Just in time before April fools day 2019 there is the new GExperts release (it’s still 2019-03-30 so you are safe 😉 ).

Please be aware that I mostly work with Delphi 2007, so this version can be regarded as tested quite well, followed by Delphi XE2. The others are only known to compile and new features are usually tested superficially with all versions. This is particularly true for Delphi 6/7 and 2005/2006.

If you want to help by testing new versions before I release them, please contact me e.g. via Delphi Praxis (link on the side bar) or via the Send Message button on my Sourceforge profile. You may also consider contributing to GExperts. You are supposedly a Delphi developer yourself and it’s not rocket science after all.

Head over to the Experimental GExperts page to download the latest release.

I will blog about the new features later. I have to look them up myself. 😉

Discussion about this post in the international Delphi Praxis forum.

 Posted by on 2019-03-30 at 18:05

Turn off Notepad++ annoyance

 none  Comments Off on Turn off Notepad++ annoyance
Mar 302019

I like the open source editor Notepad++, but it has one default setting that drives me crazy: When you close it, it remembers the current “session”. This means that when it gets started the next time, it will re-open all the files you had open when you closed it the last time.

The setting for turning off that behavior is hidden somewhere in the complex Preferences dialog and I keep forgetting where.

So, here you go, future me: It’s on the “Backup” page:

 Posted by on 2019-03-30 at 16:19

Don’t give the user any information!

 Windows, Windows 10, Windows 7  Comments Off on Don’t give the user any information!
Mar 282019

… seems to be the motto of Microsoft.

How else can you explain that a recent update of Windows 7 and Windows 10, that broke older versions of one of our programs (no idea yet what exactly is the problem, but the error code indicates an out of memory error) has different effects.

Windows 7 shows a dialog that the program could not be started and even gives some additional information. But that’s not good enough, the user could be irritated by telling him a program has crashed. So Windows 10 goes a step further and simply does … nothing. The program starts (as you can verify in the task manager), but nothing appears on the screen.

If you have administrator privileges, you can look into the event log (If you know how to do that). If you haven’t or don’t know how to, you are lost.

<sarcasm>Great feature, guys!</sarcasm>

 Posted by on 2019-03-28 at 16:04

Seagate Barracuda drives again

 none  Comments Off on Seagate Barracuda drives again
Mar 232019

Our tests are done and the result is: The new 2 TB drives are as fast as the old ones. So, no worry. The only drawback is that they are smaller. They don’t fit as nicely into the drive enclosures as the old ones. On the other hand, that means they take up less space when stored.

 Posted by on 2019-03-23 at 17:09

dzEditorLinendsFix 1.0.4 released

 Delphi  Comments Off on dzEditorLinendsFix 1.0.4 released
Mar 232019

This is nothing to write home about, really, just a small change:

Previously when starting the tool, the main window was shown for a short time before it got hidden. Now that no longer happens.

Don’t now what this is about? You are probably lucky then and don’t need this tool. But if you still want to know, go to the dzEditorLinenedsFix page.

 Posted by on 2019-03-23 at 11:43

Seagate Barracuda drives

 none  Comments Off on Seagate Barracuda drives
Mar 152019

In December 2017 I wrote about the new model of 2 TB Seagate Barracuda drives becoming unusable for us because writing performance dropped significantly after a few seconds of continuous writing to them. We do a lot of this because there are several cameras on our measurement vehicles that write one picture every metre while we are doing road condition surveys at 80 km/h (that results in about 20 pictures per second). These new drives just were not up to that demand. Our guess was that it was caused by Seagate reducing the number of platters in the drives and adding some RAM cache to make up for it. This works mostly fine for normal office work where you rarely copy large amounts of data.

That problem disappeared because for whatever reason the old model reappeared on the market again. So for 2018 we could just buy that old model and everything just worked.

Unfortunately with the arrival of 2019 we are back to square one: The old model is only available in small amounts of remaining stock. We will test the new model again and see whether it has been improved, but somehow I doubt it.

EDIT: Our tests are done and the result is: The new 2 TB drives are as fast as the old ones. So, no worry. The only drawback is that they are smaller. They don’t fit as nicely into the drive enclosures as the old ones. On the other hand, that means they take up less space when stored.

 Posted by on 2019-03-15 at 10:56

GnuGetText.pas using Utf8ToUnicodeString instead of Utf8ToWideString

 Delphi, dxgettext  Comments Off on GnuGetText.pas using Utf8ToUnicodeString instead of Utf8ToWideString
Mar 092019

A few weeks ago, Sue King contacted me because there was a problem with using dxGetText together with the Nexus DB components.

For Unicode aware Delphi versions gnugettext.pas declares a function utf8decode which calls System.UTF8ToWideString. After replacing a call to utf8decode with UTF8ToUnicodeString the problem went away.

Since I don’t want to break backwards compatibility with non Unicode Delphi versions I have now changed gnugettext.utf8decode to call UTF8ToUnicodeString instead of UTF8ToWideString.

I can’t see any problem with this change but I am far from being an expert on Unicode related issues. So, if you find any problem with this change, please comment on the corresponding topic in the international Delphi Praxis forum.

 Posted by on 2019-03-09 at 14:11

GExperts Grep can use the MAP file

 Delphi, GExperts  Comments Off on GExperts Grep can use the MAP file
Mar 032019

The GExperts Grep Search expert has various options to tell it which files to search:

  • The current file
  • All files in project
  • All files in project group
  • A directory list (separated by semicolon)

That sounds like an exhaustive list, but it isn’t. Both, project and project group, were only searching files explicitly listed in the project(s). Files that were linked into the project using the search path, were not searched.

Until now, that is: There is now an option to use the MAP file instead of the DPR file for project search.

The MAP file is created by the linker and contains a list of all source files linked into the program. By default, that file is not created though, you must explicitly enable it on the Linker page of the project options.

The least detailed setting “Segments” is sufficient for the new Grep functionality. If there is no MAP file, it falls back to the original method of searching files listed in the DPR file.

Beware that this will also search units located in the RTL / VCL and FMX source directories. This might not be what you want. I plan to add some more flexibility in the future.

There is no release yet and it might take a while until I feel like doing one, but you can always compile your own GExperts DLL. Make sure you delete the existing directory AppData\roaming\GExperts\DelphiXXX\UsesExpertCache when you replace the DLL with the new one.

Discussion about this post at

 Posted by on 2019-03-03 at 12:19