Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.08.05;
Скачать: CL | DM;

Вниз

не едут лыжи   Найти похожие ветки 

 
Dimka Maslov ©   (2007-07-08 22:56) [0]

Кто-нибудь может объяснить сей замечательный факт и рассказать как с этим бороться


var
s1, s2: string;
N1, N2: Integer;
begin
s1 := "c- ";
s2 := "c* ";
N1 := AnsiCompareText(s1, s2);

s1 := "c-a";
s2 := "c*a";
N2 := AnsiCompareText(s1, s2);



А теперь сам вопрос: какого такого N1 не равно N2?


 
Zeqfreed ©   (2007-07-08 22:58) [1]

А никто не обещал, что они будут равны.


 
Dimka Maslov ©   (2007-07-08 23:02) [2]

знак минуса в таблице символов стоит в ы ш е знака умножения. Следовательно сравнение строк "c- " и "c* ", ровно как и "c-a" c "c*a" должно возращать +1. Однако в первом случае оно возвращает -1...


 
Anatoly Podgoretsky ©   (2007-07-08 23:06) [3]

> Dimka Maslov  (08.07.2007 22:56:00)  [0]

Теперь значения в студию


 
Zeqfreed ©   (2007-07-08 23:07) [4]

По-моему, у звездочки код меньше. Хотя, если возвращает результат разного знака, то это действительно странно.

Латиницу и кириллицу, случайно, не смешали?


 
Dimka Maslov ©   (2007-07-08 23:13) [5]


> Теперь значения в студию

В первом случае -1, во втором случае +1


> По-моему, у звездочки код меньше

По-моему тоже


> Латиницу и кириллицу, случайно, не смешали?

Нет, проверено.


 
Dimka Maslov ©   (2007-07-08 23:15) [6]

MSDN по этому поводу говорит следующее

Typically, strings are compared using what is called a "word sort" technique. In a word sort, all punctuation marks and other nonalphanumeric characters, except for the hyphen and the apostrophe, come before any alphanumeric character. The hyphen and the apostrophe are treated differently than the other nonalphanumeric symbols, in order to ensure that words such as "coop" and "co-op" stay together within a sorted list.

If the SORT_STRINGSORT flag is specified, strings are compared using what is called a "string sort" technique. In a string sort, the hyphen and apostrophe are treated just like any other nonalphanumeric symbols. Their positions in the collating sequence are before the alphanumeric symbols.

однако указание этого флага в CompareString результата не улучшает...


 
Anatoly Podgoretsky ©   (2007-07-08 23:17) [7]

Это сравнение по локализации и я думаю, что знак минуса игнорируется, проверь

"123" и "1-2-3"

И результат в студию


 
Dimka Maslov ©   (2007-07-08 23:23) [8]

если минус игнорируется, то результат должен равняться нулю. если он не игнорируется, то +1. Однако сравнение даёт -1...


 
Vlad Oshin ©   (2007-07-08 23:28) [9]

читал, что такое имеет место быть.
не корректна эта функция..
надо самому проанализировать


 
Dimka Maslov ©   (2007-07-08 23:29) [10]

Там вообще явная хрень потому-то
AnsiCompareText("-"#8" deselect all", "c3k1") выдаёт 1
а
AnsiCompareText("-", "*") = -1
a
AnsiCompareText("a-", "a*") = -1
a
AnsiCompareText("-a", "*a") = 1


 
Anatoly Podgoretsky ©   (2007-07-08 23:31) [11]

Но ты же сравниваешь строки

s1 := "c ";
s2 := "c* ";

s1 := "ca";
s2 := "c*a";


 
Anatoly Podgoretsky ©   (2007-07-08 23:33) [12]

Ты проверил те строки которые я предложил, должен быть 0 если мое предполежение насчет word sort верно


 
Dimka Maslov ©   (2007-07-08 23:43) [13]

Проверил и там не 0! и string sort не помогает



Страницы: 1 вся ветка

Текущий архив: 2007.08.05;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.023 c
1-1180453969
Stenfit
2007-05-29 19:52
2007.08.05
*.CHM


15-1183841855
Vlad Oshin
2007-07-08 00:57
2007.08.05
что-то раньше не замечал. а действительно. Платят за таку ерунду


1-1180360269
timonissimo
2007-05-28 17:51
2007.08.05
TMainMenu :чтобы меню разместилось на всех формах


2-1183923865
nali
2007-07-08 23:44
2007.08.05
virtual или dynamic metods


15-1183540463
Alkid
2007-07-04 13:14
2007.08.05
Орешник?