Ich musste gerade feststellen, dass sich die API-Funktion
CompareString(W) unter Windows Vista anders verhält als unter XP und kleiner. Der Aufruf von...
Delphi-Quelltext
1:
| CompareString(LOCALE_USER_DEFAULT, NORM_IGNORECASE, 'GRÜN', Length('GRÜN'), 'GRUEN', Length('GRUEN')) |
... liefert unter Vista
CSTR_EQUAL als Ergebnis zurück. Selbst wenn ich statt
LOCALE_USER_DEFAULT mit MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT) eine englische Locale mitgeben, kommt dieses Ergebnis. Die Unterschiede zwischen Vista und XP sind übrigens nicht auf deutsche Umlaute beschränkt. Bspw. wird chinesischer Text bei gleichen Einstellungen und gleicher Locale komplett anders sortiert.
Die verschiedenen in Vista hinzugekommenen Flags haben offenbar auch keinen Einfluss auf das Ergebnis.
Hat jemand eine Idee, wie ich das von XP bekannte Verhalten auch unter Vista erreichen kann?