Delphi 2009 では、CompareStr
(SysUtils で定義された) 関数とCompareString
(Windows API からの) 関数の違いは何ですか?
どちらも使用するロケールを指定できますが、使用可能な比較フラグがあるため、Windows の方が単純に「完全」ですか? その結果、一方は他方よりも高速ですか?
Delphi 2009 では、CompareStr
(SysUtils で定義された) 関数とCompareString
(Windows API からの) 関数の違いは何ですか?
どちらも使用するロケールを指定できますが、使用可能な比較フラグがあるため、Windows の方が単純に「完全」ですか? その結果、一方は他方よりも高速ですか?
CompareString はロケール情報を使用するため、ae や æ などは一致として扱われ、ソートは地理的地域に適しています。
CompareStr('', loInvariantLocale) は、文字列内の文字をバイト単位で比較するだけです。CompareStr('', loUserLocale) は内部で CompareString を呼び出すため、CompareString が受け入れることができる追加のフラグを除いて、それらは同一です。これもインライン化されているため、CompareString を直接呼び出す場合と速度に違いは見られません。