Entwickler-Ecke

Windows API - CompareString unter Vista anders als unter XP


netspy - Di 10.04.07 02:14
Titel: CompareString unter Vista anders als unter XP
Ich musste gerade feststellen, dass sich die API-Funktion CompareString(W) [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/Resources/Strings/StringReference/StringFunctions/CompareString.asp] 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?


Bernhard Geyer - Di 10.04.07 07:16

Hast du nicht auch schon bei DP (http://www.delphipraxis.net/topic106943.html)?
Falls jemand Antworten sollte, sollte er schon den Stand dort kennen.


netspy - Di 10.04.07 11:27

Ich habe bei Delphi-PRAXIS nur ganz zum Schluss mal nachgefragt und bisher keine Antwort erhalten. Der Autor dieses Threads hat mich nur auf das eigentlich Problem gebracht, eine Lösung fehlt aber noch.