Announcement

Collapse
No announcement yet.

CompareString arbeitet unterschiedlich unter XP - Vista mit deutschen Umlauten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • CompareString arbeitet unterschiedlich unter XP - Vista mit deutschen Umlauten

    Hallo!

    Von Windows9x bis XP gibt der folgende Code unter Win32 wie auch .NET den Wert 1 zurück. Die Zeichenketten sind unterschiedlich. Was nach deutschen Gesichtspunkten ja auch richtig ist.

    Code:
    Win32 
    CompareString(LOCALE_USER_DEFAULT, 0, 'HÜBNER', Length('HÜBNER'),'HUEBNER', Length('HUEBNER')) 
     
    .NET
    String.Compare("HÜBNER", "HUEBNER")

    Unter Vista geben die Funktionen aber CSTR_EQUAL als Ergebnis zurück, d.h. die Zeichenketten sind gleich.

    Woran liegt dieses unterschiedliche Verhalten? Was ist unter Vista anders?

    Dieses Fehlverhalten hat z.B. fatale Folgen für TStringList.IndexOf und TStringList.IndexOfName in Delphi, da diese jetzt unter Vista anders arbeiten.

    Viele Grüße,

    Sven Harazim

  • #2
    Schöne grüße von der Delphi-Praxis :-)

    Könntest Du mal die anderen Versionen von String.Compare ausprobieren (z.B. mit entsprechenden StringComparison-Parameter:

    Comment


    • #3
      Das Du mir hier antwortest war mir fast klar. ;-) Selbst in MSDN-Newsgroups und Forum kommt nicht wirklich eine Reaktion.

      Ich test die anderen Varianten auch mal durch. Ich kann mir nicht so richtig vorstellen, dass dieses Verhalten unter Vista gewünscht ist.

      Sven
      Zuletzt editiert von Sven Harazim; 04.04.2007, 19:48.

      Comment


      • #4
        Ich werd blöd...

        String.Compare funktioniert jetzt in allen Varianten. Ich könnte schwören, das dem gestern nicht so war.

        Naja, zum Glück funktioniert CompareString noch nicht (heul)

        Comment

        Working...
        X