UnicodeユーティリティおよびインターフェイスにDelphi2007およびTMSコンポーネントを使用する(UnicodeサポートのためにDelphi 2009にアップグレードすることはオプションではありません)。
ファイル名のリストを文字列リスト(TTntStringList)に保存しています。ソートされ、大文字と小文字は区別されません。デフォルトのソートルーチンは、CompareStringW(LOCALE_USER_DEFAULT、NORM_IGNORECASE、...)を使用して文字列を比較します(検索でも同じです)。ただし、これは、dummyss.txtとdummyß.txt(たとえば)を同一視するため問題ですが、NTFSでは、これら2つのファイルを同じフォルダに置くことは完全に合法です。つまり、これらは異なる名前として扱われます。
私の理解では、Vista以降では、ファイル名を比較する正しい方法はCompareStringOrdinalを使用することです。これは正しいです?
ビスタ以前のシステムでは、正しい方法は何でしょうか?CompareStringW(LOCALE_INVARIANT、...)である必要があると思いますが、完全にはわかりません。
ありがとう