使用Delphi 2007和TMS组件进行Unicode工具和界面处理(升级到Delphi 2009以支持Unicode不是一个选择)。
我正在将文件名列表存储在字符串列表(TTntStringList)中。它是经过排序的且不区分大小写。默认的排序程序使用CompareStringW(LOCALE_USER_DEFAULT,NORM_IGNORECASE,...)来比较字符串(查找也是如此)。然而,这是一个问题,因为这将把dummyss.txt与dummyß.txt(例如)视为相同,但在NTFS上,这样做是完全合法的,即它们被视为不同的名称。
我理解的是,在Vista及以上版本上,比较文件名的正确方法是使用CompareStringOrdinal。这正确吗?
在Vista之前的系统上,正确的方式是什么?我相信应该是CompareStringW(LOCALE_INVARIANT,...),但我不完全确定。
谢谢 (xiè xiè)