Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   D2010: CompareText liefert anderer Werte als -1,0,+1 (https://www.delphipraxis.net/162374-d2010-comparetext-liefert-anderer-werte-als-1-0-1-a.html)

hoika 19. Aug 2011 15:14

D2010: CompareText liefert anderer Werte als -1,0,+1
 
Hallo #,

nach Umstieg auf D2010 und Unicode wundere ich mich über das CompareText von FastCode (ist ja in D2010 drin),
OK ich bin entsetzt ! ;)

Die Funktion sollte eigentlich nur -1, 0, +1 liefern, macht sie aber nicht
sie bringt auch andere Werte!

Ausserdem gibt sie die Werte falch an

Bsp:
CompareText('Häger', 'Harger') liefert +1,
also wird Häger hinter Harger einsortiert.
Laut Duden wird das ä aber zu a beim Sortieren.

WideCompareText funktioniert aber, klar ist das von Windows ...

Was ist hier los ?

Danke

generic 19. Aug 2011 15:22

AW: D2010: CompareText liefert anderer Werte als -1,0,+1
 
Das mit der Sortierung ist so eine Sache.
Diese ist immer abhängig von den lokalen Gepflogenheiten.

Daher kannst du auch in Datenbanken die Sortierung angeben.
Telefonbuch, Binär usw.

Delphi führt wahrscheinlich einen Binärvergleich durch.
Durch das Unicode gibt es dort auch ein neuen Charwert für Umlaute.

>nur -1, 0, +1 liefern, macht sie aber nicht sie bringt auch andere Werte!

Was für andere Werte?

Neutral General 19. Aug 2011 15:37

AW: D2010: CompareText liefert anderer Werte als -1,0,+1
 
Hallo,

Nirgendwo steht etwas von -1, 0 und 1:

Zitat:

The comparison is NOT case sensitive and does not consider the Windows locale settings. The return integer value is less than 0 if S1 is less than S2, 0 if S1 equals S2, or greater than 0 if S1 is greater than S2.

himitsu 19. Aug 2011 18:24

AW: D2010: CompareText liefert anderer Werte als -1,0,+1
 
CompareText vergleicht bitgenau Byte-/Char-weise und beachtet keine Codepages.

Nimm AnsiCompareText, das ist unter D2007- ANSI und seit D2009+ ist das Unicode (auch wenn es nicht so klingt).

Aber blos kein WideCompareText verwenden, denn das ist WideString (war es schon vor D2009) und somit sehr bremsend, wenn der UnicodeString/String erst umkodiert werden muß. :stupid: (es sei denn,man nutzt WideStrings, dann ist es genau andersrum)


AnsiCompareText/WideCompareText = WinAPI
CompareText = delphieigener Assemblervergleich.

hoika 19. Aug 2011 18:30

AW: D2010: CompareText liefert anderer Werte als -1,0,+1
 
Hallo,

hm, dann macht das AdvStringGrid Mist.
*weiter gugg*


Danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:21 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz