About 20 years ago, I implemented a hash table that used binary trees for buckets. It was supposed to support Unicode strings as keys, and I used the Windows comparison functions to figure out how to compare the keys, in order to handle case insensitive lookup IIRC. I tested the table with randomly generated strings, and was puzzled to discover expected lookups would fail with some table constructions. I narrowed it…
IIRC the newer Unicode collation sensitive comparison functions hadn't been implemented until Vista Looks like that's the case: https://docs.microsoft.com/en-us/windows/desktop/api/stringa...
It might have been an early version of this one: http://codecentral.embarcadero.com/Item/15171 - from 2001 - but I've written quite a few hash tables over the years, and may be blending the different recollections. I never used Vista, and I'm pretty sure my experience predated Windows 7.
I also wrote JclStrHashMap to support JclExprEval: https://github.com/project-jedi/jcl/blob/master/jcl/source/c...
I also wrote the Delphi runtime library TDictionary generic implementation, but that was more recent.
Update I found it: original discussion, from newsgroups, has been ported to the web: http://www.delphigroups.info/2/62/478610.html
It was from 2004, so more like 15 years ago. It's mildly painful to read myself from back then too :)