为 Unicode 实用程序和界面使用 Delphi 2007 和 TMS 组件(升级到 Delphi 2009 以支持 Unicode 不是一种选择)。
我将文件名列表存储在字符串列表(TTntStringList)中。它已排序且不区分大小写。默认排序例程使用 CompareStringW(LOCALE_USER_DEFAULT, NORM_IGNORECASE, ...) 来比较字符串(查找也是如此)。但是,这是一个问题,因为这会将 dummyss.txt 等同于 dummyß.txt(例如),但在 NTFS 上,将这两个文件放在同一个文件夹中是完全合法的,即它们被视为不同的名称。
我的理解是,在 Vista 和更新版本上,比较文件名的正确方法是使用 CompareStringOrdinal。这个对吗?
在 Vista 之前的系统上,正确的方法是什么?我相信它应该是 CompareStringW(LOCALE_INVARIANT, ...) 但我不完全确定。
谢谢